我想将两个范围条件与包含or
结合起来。
我尝试使用:scope :myscope, lambda { |u| where(cond1: u.id) or where(cond2: u.id)}
,但它不起作用。我该怎么办?
答案 0 :(得分:0)
您可以使用查询方法#or
:
where(cond1: u.id).or(cond2: u.id)
答案 1 :(得分:0)
Rails 5将实现" OR"正如@jphager2的答案所说,但同时你必须弄脏你的手:
scope :myscope, lambda {where ["cond1 = ? OR cond2 = ?", u.id, u.id]}
答案 2 :(得分:0)
你可以这样做: -
scope :myscope, lambda { |u| where('cond1 = ? OR cond2 = ?', u.id, u.id)}
答案 3 :(得分:0)
ActiveRecord提供了一些绕过编写SQL需求的方法,但在这种情况下,您需要花费很少的精力并编写一小段SQL。
scope :myscope, -> { |u| where("cond1 = ? OR cond2 = ?", u.id, u.id) }
您还可以更简洁并使用
scope :myscope, -> { |u| where("cond1 = :id OR cond2 = :id", id: u.id) }
编写一些SQL没有错。不要陷入陷阱“如果我不能用Ruby写它,它是丑陋的或不是Rails方式”。