Conrad, Interesting...please do let me know your results with 1.8.6.
Thanks, Tyler Arrigoni President OneInterface.net Network Engineering, Inc. 7475 North Palm, Suite 105, Fresno, CA 93711 Voice: 559-437-3750 ext. 110 Cell: 559-696-0400 Fax1: 866-691-5145 (confidential) Fax2: 559-437-3754 (non-confidential) Email: [email protected] GnuPG: http://www.oneinterface.net/crypt/tyler.asc -------- Original Message -------- Subject: [Rails] Re: Method not available within same module as definition From: Conrad Taylor <[email protected]> To: [email protected] Date: 3/27/09 1:30 AM > On Thu, Mar 26, 2009 at 6:33 PM, <[email protected] > <mailto:[email protected]>> wrote: > > > # This will probably be embarrassingly obvious. It acts as if it's an > # evaluation order issue (like the method call is happening prior to the > # method definition). But that isn't the case. The model_names method > # works fine on the console. I'm missing a core concept obviously. > > # Error message from test > tylers-mbpro:test tyler$ ruby helpers/application_helper_test.rb > > /Users/tyler/versioned/tma-code/rails/facilit-e/app/helpers/application_helper.rb:23: > undefined local variable or method `model_names' for > ApplicationHelper:Module (NameError) > > # ApplicationHelper > module ApplicationHelper > > def self.make_user_select_collects(assoc_id_param) > module_eval %{ > def select_collect_by_#{assoc_id_param}(klass, assoc_id, > order_by_col='full_name') > klass.find_all_by_#{assoc_id_param}(assoc_id, > :order => order_by_col.to_sym).collect {|s| [s.full_name, s.id > <http://s.id>]} > end > } > end > > def self.model_names > models = Array.new > Dir["app/models/**/*.rb"].each do |f| > models << > File.basename(f).sub(/.rb$/,'').titlecase.gsub(/\s/,'').constantize > end > models > end > > ids = Array.new > model_names.each do |klass| #model_names > klass.column_names.grep(/_id$/).each do |assoc_id| > unless ids.member?(assoc_id) > ids << assoc_id > make_user_select_collects(assoc_id) > end > end > end > > end > > # Thanks for any help > > -- > Thanks, > > Tyler Arrigoni > President > > OneInterface.net Network Engineering, Inc. > 7475 North Palm, Suite 105, Fresno, CA 93711 > Voice: 559-437-3750 ext. 110 > Cell: 559-696-0400 > Fax1: 866-691-5145 (confidential) > Fax2: 559-437-3754 (non-confidential) > Email: [email protected] <mailto:[email protected]> > GnuPG: http://www.oneinterface.net/crypt/tyler.asc > > > Tyler, I wasn't able to reproduce the error message above using this > simplified example: > > module ApplicationHelper > > def self.make_user_select_collects(assoc_id_param) > module_eval %{ > def select_collect_by_#{assoc_id_param}(klass, assoc_id, > order_by_col='full_name') > klass.find_all_by_#{assoc_id_param}(assoc_id, > :order => order_by_col.to_sym).collect {|s| [s.full_name, s.id > <http://s.id>]} > end > } > end > > def self.model_names > models = Array.new > Dir["app/models/**/*.rb"].each do |f| > models << > File.basename(f).sub(/.rb$/,'').titlecase.gsub(/\s/,'').constantize > end > models > end > > ids = Array.new > model_names.each do |klass| #model_names > klass.column_names.grep(/_id$/).each do |assoc_id| > unless ids.member?(assoc_id) > ids << assoc_id > # make_user_select_collects(assoc_id) > end > end > end > > puts "Model #{self} completed" > > end > > darnoc-desktop:app conradwt$ ruby helpers/application_helper.rb > > => Model ApplicationHelper completed > > BTW, I used Ruby 1.9.1 to execute the above code. I'll try the above on > my laptop using > Ruby 1.8.6 to see if it's consistent with Ruby 1.9.1. > > -Conrad > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

