рельсы активная запись - оговорка о сложных условиях - PullRequest
3 голосов
/ 10 января 2010

это работает:

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

Но я хочу, чтобы плюс имел условие: удалено => ложно

varietals = Varietal.find(:all, :conditions =>{ :deleted => false})

есть идеи?

я собираюсь использовать find_by_sql?

Ответы [ 3 ]

5 голосов
/ 10 января 2010

Я бы справился с этим с помощью named_scope, чтобы сообщить о намерениях и способствовать повторному использованию:

named_scope :undeleted,
            :conditions => { :deleted => false }

Тогда вы можете просто использовать:

varietals = Varietal.undeleted.find([1,2])
3 голосов
/ 10 января 2010

Вы можете сделать это несколькими способами, но это самый простой способ:

varietals = Varietal.find( [1,2], :conditions => { :deleted => false })

Вы можете увидеть в документах , что первый параметр find может принимать целое число или массив.

2 голосов
/ 10 января 2010
ids = [1,2]
varietals = Varietal.find(:all, :conditions => {:id => ids, :deleted => false})

Это должно сработать, но пока не проверял.

Из документов :

Массив может использоваться в хэше для используйте оператор SQL IN:

Student.find(:all, :conditions => { :grade => [9,11,12] })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...