I have a method that I want to accept args like the "find" method does and I need to pass those args along to a find call. # in controller action: @projects = Project.find_allowed(session[:user], :order => "name") # start of the model method: def self.find_allowed(owner, *args) projects = self.find_all(args) ... No matter how I try to pass those args along I get something like the following error: ActiveRecord::StatementInvalid: Mysql::Error: #42S22Unknown column ''ordername'' i n ''where clause'': SELECT * FROM projects WHERE (ordername) I''ve tried self.find_all(*args), I''ve tried doing various conversions and nothing seems to work. I''m sure I''m missing something simple, I just can''t find what it is. Thanks for any help anybody can offer. -- Posted via http://www.ruby-forum.com/.
On Feb 15, 2006, at 2:00 PM, Ryan Eibling wrote:> I have a method that I want to accept args like the "find" method does > and I need to pass those args along to a find call. > > # in controller action: > > @projects = Project.find_allowed(session[:user], :order => "name") > > # start of the model method: > > def self.find_allowed(owner, *args) > projects = self.find_all(args) > ... >def self.find_allowed(owner, *args) projects = self.find_all(*args) Since you are *splatting the args ito the method, you need to *splat them into find. then it will work as you want it to. Cheers- -Ezra Zygmuntowicz Yakima Herald-Republic WebMaster http://yakimaherald.com 509-577-7732 ezra@yakima-herald.com
Ezra Zygmuntowicz wrote:> def self.find_allowed(owner, *args) > projects = self.find_all(*args)Thanks, but that was one of the things I already tried that didn''t work. I don''t know exactly how find_all is implemented, but I discovered that when I change it to: self.find(:all, *args) ...it works. Strange. -- Posted via http://www.ruby-forum.com/.
On Feb 16, 2006, at 4:14 AM, Ryan Eibling wrote:> Ezra Zygmuntowicz wrote: > >> def self.find_allowed(owner, *args) >> projects = self.find_all(*args) > > Thanks, but that was one of the things I already tried that didn''t > work. > I don''t know exactly how find_all is implemented, but I discovered > that > when I change it to: > > self.find(:all, *args) > > ...it works. Strange. >Yeah you''re right. I didn''t use find_all in my test as I always use find :all . So I shouldn''t have assumed find_all worked. Cheers- -Ezra Zygmuntowicz WebMaster Yakima Herald-Republic Newspaper ezra@yakima-herald.com 509-577-7732