Prev: hash key (?)
Next: Documentation on embedding ruby?
From: Fourchette Fourchette on 29 Jul 2010 08:30 hi there, i am not a expert with ruby at all. this is my first post, i do hope it's at right place, please advise otherwise. i have some dump reporting to do. The input is a csv file. i figured rupert could be my friend. i got it up and running with the following # instanciate the csv reading stuff t = Table("source.csv") # remove unnecessary junk t.remove_column("Product/Release Xdor") now i want to filter and search data like Student.find(:all, :conditions => { :first_name => "Harvey", :status => 1 }) (example taken from http://api.rubyonrails.org/classes/ActiveRecord/Base.html) however, the trick is that some of the column names have both the '/' character and white spaces in them. so it would look like t.find(:all, :conditions => { :Product/White Darf => "Harvey", :Solution/Small Story => 0 }) => that is giving me syntax errors. t.find(:all, :conditions => { :'Product/White Darf' => "Harvey", :'Solution/Small Story' => 0 }) => this is throwing instead $ ruby ruport.rb Anovo-Biometrics-cases.csv ruport.rb:86:in `find': wrong number of arguments (2 for 1) (ArgumentError) from ruport.rb:86:in `run' from ruport.rb:115 I feel confused. it seriously look like i've fallen into some beginners issue. anyone has an idea ? thanks -- Posted via http://www.ruby-forum.com/.
From: Bob Nadler on 29 Jul 2010 13:41 Hi, On Thu, Jul 29, 2010 at 8:30 AM, Fourchette Fourchette <alexisdal(a)hotmail.com> wrote: > hi there, > > i am not a expert with ruby at all. this is my first post, i do hope > it's at right place, please advise otherwise. > There's a Ruport mailing list here: http://groups.google.com/group/ruby-reports > i have some dump reporting to do. The input is a csv file. i figured > rupert could be my friend. > > i got it up and running with the following > > # instanciate the csv reading stuff > t = Table("source.csv") > > # remove unnecessary junk > t.remove_column("Product/Release Xdor") > > now i want to filter and search data like > > Student.find(:all, :conditions => { :first_name => "Harvey", :status => > 1 }) > > (example taken from > http://api.rubyonrails.org/classes/ActiveRecord/Base.html) > > however, the trick is that some of the column names have both the '/' > character and white spaces in them. > > so it would look like > > t.find(:all, :conditions => { :Product/White Darf => "Harvey", > :Solution/Small Story => 0 }) > > => that is giving me syntax errors. > > > t.find(:all, :conditions => { :'Product/White Darf' => "Harvey", > :'Solution/Small Story' => 0 }) > > => this is throwing instead > > $ ruby ruport.rb Anovo-Biometrics-cases.csv > ruport.rb:86:in `find': wrong number of arguments (2 for 1) > (ArgumentError) > from ruport.rb:86:in `run' > from ruport.rb:115 > > I feel confused. it seriously look like i've fallen into some beginners > issue. > > anyone has an idea ? > You're confusing the Ruport API with ActiveRecord. Based on your description I'm assuming you're using Ruport in a stand-alone Ruby script and not Rails. Take a look at Ruport::Data::Table::rows_with (http://api.rubyreports.org/classes/Ruport/Data/Table.html#M000036) You'll need to do something like: t.rows_with('Product/White Darf' => 'Harvey', 'Solution/Small Story' => 0) > thanks > -- > Posted via http://www.ruby-forum.com/. > > Try the Ruport mailing list if you need more help. (http://groups.google.com/group/ruby-reports) --Bob
From: Fourchette Fourchette on 3 Aug 2010 04:59 Thanks bob, rows_with does the job. great ! however, i have a field (Solution/Hardware) that i want to use in the _with condition. the trick is that this column often contains a list of material such as "PC123,PX0990,ER4554,ER554", and I want the filter to grab only line with "ER" in the string. So basically, i am looking for the row_with parameter syntax to use myfield like "*ER*" instead of myfield = "ER" How can i achieve this ? thanks ps: i got my invitation to ruport forum still pending :) -- Posted via http://www.ruby-forum.com/.
From: Bob Nadler on 3 Aug 2010 13:06 On Tue, Aug 3, 2010 at 4:59 AM, Fourchette Fourchette <alexisdal(a)hotmail.com> wrote: > Thanks bob, > > rows_with does the job. great ! > > however, i have a field (Solution/Hardware) that i want to use in the > _with condition. the trick is that this column often contains a list of > material such as "PC123,PX0990,ER4554,ER554", and I want the filter to > grab only line with "ER" in the string. > > So basically, i am looking for the row_with parameter syntax to use > myfield like "*ER*" > instead of > myfield = "ER" > > How can i achieve this ? rows_with can also take a block, so you can define how you want the column filtered (in this case I'd probably use a regular expression). Something like: t.rows_with(column_name) { |col| col ~= /regex/ } Take a look at the Ruby API for regular expressions for more info. > thanks > > ps: i got my invitation to ruport forum still pending :) > -- > Posted via http://www.ruby-forum.com/. > >
From: Fourchette Fourchette on 6 Aug 2010 11:52 > > rows_with can also take a block, so you can define how you want the > column filtered (in this case I'd probably use a regular expression). > Something like: > > t.rows_with(column_name) { |col| col ~= /regex/ } > > Take a look at the Ruby API for regular expressions for more info. wow... can't wait to test that :) -- Posted via http://www.ruby-forum.com/.
|
Pages: 1 Prev: hash key (?) Next: Documentation on embedding ruby? |