Accepting and passing args to find


#1

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.


#2

On Feb 15, 2006, at 2:00 PM, Ryan E. 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 Z.
Yakima Herald-Republic
WebMaster
http://yakimaherald.com
509-577-7732
removed_email_address@domain.invalid


#3

Ezra Z. 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.


#4

On Feb 16, 2006, at 4:14 AM, Ryan E. 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 Z.
WebMaster
Yakima Herald-Republic Newspaper
removed_email_address@domain.invalid
509-577-7732