我想查找有关created_on> =一些日期和一些名称列表中的名称的记录。

对于“> =”,我必须使用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")

10-07 14:46