Active record :find having an if statement inside the conditions


#1

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.


#2

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?


#3

Or is it just:

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

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


#4

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


#5

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


#6

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