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.
on 2006-02-15 23:00
on 2006-02-16 00:57
On Feb 15, 2006, at 2:00 PM, Ryan Eibling wrote: > 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 email@example.com
on 2006-02-16 13:14
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.
on 2006-02-16 16:49
On Feb 16, 2006, at 4:14 AM, Ryan Eibling wrote: > > 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 firstname.lastname@example.org 509-577-7732