условный update_all с таблицами объединения в ActiveRecord? - PullRequest
2 голосов
/ 16 марта 2011

Следующий запрос возвращает коллекцию объектов AR, которые я хочу обновить:

Variant.all(:joins => { :candy_product => :candy }, :conditions => "candies.name = 'Skittles'")

Я пытаюсь сделать что-то вроде следующего:

Variant.update_all(:price => 5, :joins => { :candy_product => :candy }, :conditions => "candies.name = 'Skittles'")

Это должно только обновить цену для вариантов, возвращенных из исходного запроса. Это возможно с AR или мне придется писать SQL? Это довольно большая коллекция, поэтому все, что повторяется, отсутствует.

Использование Rails 2.3.4.

1 Ответ

4 голосов
/ 16 марта 2011

Как правильно указал @ Франсуа Босолей, мы должны использовать scoped

Variant.scoped(:joins => { :candy_product => :candy }, :conditions => "candies.name = 'Skittles'").update_all(:price => 5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...