我想根据 created_on >= some date AND name IN some list of names 的组合查找记录。
对于“>=”,我必须使用 sql 条件。对于“IN”,我必须使用条件散列,其中键是 :name,值是名称数组。
有没有办法将两者结合起来?
最佳答案
您可以在 rails 2.1 及更高版本中使用命名作用域
Class Test < ActiveRecord::Base
named_scope :created_after_2005, :conditions => "created_on > 2005-01-01"
named_scope :named_fred, :conditions => { :name => "fred"}
end
那么你可以做
Test.created_after_2005.named_fred
或者你可以给 named_scope 一个 lambda 来允许你传入参数
Class Test < ActiveRecord::Base
named_scope :created_after, lambda { |date| {:conditions => ["created_on > ?", date]} }
named_scope :named, lambda { |name| {:conditions => {:name => name}} }
end
那么你可以做
Test.created_after(Time.now-1.year).named("fred")
关于ruby-on-rails - 混合 ActiveRecord 查找条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/83674/