Active record :find having an if statement inside the conditions

Hi, i was just wondering if its is possible to put a if statment inside the find conditions

for example:

grovery_price = model.find(:first, :conditions => [ "if x = ? then y must = ?", 200, 300]

I have been googling for some time for a solution to this but i just can't seem to find any.

Tyl Tan wrote:

Hi, i was just wondering if its is possible to put a if statment inside the find conditions

for example:

grovery_price = model.find(:first, :conditions => [ "if x = ? then y must = ?", 200, 300]

I have been googling for some time for a solution to this but i just can't seem to find any.

Does

:conditions => ["(x = ? and y = ?) or x <> ?", 200, 300, 200]

work?

Or is it just:

:conditions => ["(x = ? and y = ?)", 200, 300]

i.e., do you want the items where x != 200 or not?

If x equal 200 then I want the find to check that y is equal to 300 but if x is not equal to 200 there should be no check with y

Tyl Tan wrote:

If x equal 200 then I want the find to check that y is equal to 300 but if x is not equal to 200 there should be no check with y

Well,

:conditions => ["x <> ? or (x = ? and y = ?)", 200, 200, 300]

If SQL short-circuits the logic, that shouldn't check y when x != 200

Thanks I'll try it out when I have the time