rails active record - complicated conditions clause

phi*_*son 3 activerecord ruby-on-rails

this works:

ids = [1,2]
varietals = Varietal.find(:all, :conditions => [ "id IN (?)",ids])
Run Code Online (Sandbox Code Playgroud)

But what I want to do is that plus have a condition of: deleted => false

varietals = Varietal.find(:all, :conditions =>{ :deleted => false})
Run Code Online (Sandbox Code Playgroud)

any ideas?

am i going to have to use find_by_sql?

Tob*_*ede 5

我会用named_scope来处理这个问题,以传达意图并促进重用:

named_scope :undeleted,
            :conditions => { :deleted => false }
Run Code Online (Sandbox Code Playgroud)

然后你可以简单地使用:

varietals = Varietal.undeleted.find([1,2])
Run Code Online (Sandbox Code Playgroud)