鉴于我有以下代码
class Product < ActiveRecord::Base
def self.from_country(country)
where(:origin_country_id => country.id)
end
def self.for_country(country)
where(:destination_country_id => :country.id)
end
end
如果我想要制作并分发到德国的产品,我可以执行以下操作
Product.for_country.from_country #=> ActiveRecord::Relation
products = Product.for_country.from_country #=> Array[<Product...>...]
在上面的例子中,如果我愿意,可以在将其分配给产品之前链接更多的关系方法。
如果我想访问涉及德国的所有产品,我可以执行以下操作
Product.for_country | Product.from_country #=> Array[<Product...>...]
products = Product.for_country | Product.from_country #=> Array[<Product...>...]
这里我不能将更多的关系方法链接到产品之前,因为OR的结果是Array
而不是ActiveRecord
:: Relation。
我的问题是我如何通过from_country或for_country获得ActiveRecord::Relation
作为结果?
理想情况类似于以下Product.for_country(country).or(Product.from_country(country))
答案 0 :(得分:0)
How can I make an 'OR' statement in ActiveRecord?
我知道这不是你问题的确切答案,但我会说另一种方法,例如使用这个'或'逻辑的involving_country
会使你的其他代码比链接{{1更易读}和from_country
。那些被束缚的方法并没有真正解释得很好。