3 回答

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
使用ARel
t = Post.arel_table
results = Post.where(
t[:author].eq("Someone").
or(t[:title].matches("%something%"))
)
結(jié)果SQL:
ree-1.8.7-2010.02 > puts Post.where(t[:author].eq("Someone").or(t[:title].matches("%something%"))).to_sql
SELECT "posts".* FROM "posts" WHERE (("posts"."author" = 'Someone' OR "posts"."title" LIKE '%something%'))

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
如果要對(duì)一列的值使用OR運(yùn)算符,可以將數(shù)組傳遞給.where
,ActiveRecord將使用IN(value,other_value)
:
Model.where(:column => ["value", "other_value"]
輸出:
SELECT `table_name`.* FROM `table_name` WHERE `table_name`.`column` IN ('value', 'other_value')
這應(yīng)該相當(dāng)于OR
單個(gè)列

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
在Rails 3中,它應(yīng)該是
Model.where("column = ? or other_column = ?", value, other_value)
這還包括原始sql但我不認(rèn)為在ActiveRecord中有一種方法可以進(jìn)行OR操作。你的問題不是一個(gè)菜鳥問題。
- 3 回答
- 0 關(guān)注
- 655 瀏覽
添加回答
舉報(bào)