我需要一条SQL语句来检查是否满足某个条件:
SELECT * FROM my_table WHERE my_table.x=1 OR my_table.y=1
我希望用“Rails3”的方式实现这个。我正在寻找类似以下的东西:Account.where(:id => 1).or.where(:id => 2)
我知道我可以总是退而求其次使用SQL或条件字符串。然而,在我的经验中,当组合作用域时,这通常会导致混乱。有什么最好的方法可以做到这一点吗?
另一个相关的问题是,如何描述依赖于OR条件的关系。我找到的唯一方法是:
has_many :my_thing, :class_name => "MyTable", :finder_sql => 'SELECT my_tables.* ' + 'FROM my_tables ' +
'WHERE my_tables.payer_id = #{id} OR my_tables.payee_id = #{id}'
然而,当它们组合使用时,这些方法再次出现了问题。有没有更好的方法来指定这个?
nil
:例如Thing.where(foo: [1, nil])
会被翻译成SELECT "things".* FROM "things" WHERE (("things"."foo" = 1 OR "things"."foo" IS NULL))
。太棒了! - zkcroAccount.arel_table [:id] .not_eq(nil)
和.or()
组合。 - Daniel Antonio Nuñez Carhuayomy_table.x=1 OR my_table.y=1
,其中 x 和 y 是表中不同的列。 - Josh