Могу ли я обновить все свои продукты для определенного пользователя при заполнении? - PullRequest
3 голосов
/ 09 января 2012

Как я могу обновить все продукты, чтобы назначить им определенного пользователя?

admin = User.create(:name => "Admin", :password => "password")

walmart = Store.create(:name => 'Walmart', :address => 'San Francisco, Palo Alto')

walmartprices = walmart.products.create
([
  {:name => "Rice",    :price => '5.93'},
  {:name => "Chicken", :price => "2.24"},      
  {:name => "Milk",    :price => '3.81'},
  {:name => 'Eggs',    :price => '2.78'}
])

walmartprices.update_attribute(:user => admin)

Конечно, это дает мне ошибку:

undefined method `update_attribute' for #<Array:0x5342f70>

Возможно ли это? Как это можно сделать?


EDIT

Это мои ассоциации:

Product
 belongs_to :user and :store

Store
 has_many :products

User
  has_many :products

1 Ответ

1 голос
/ 09 января 2012

Один наивный способ сделать это:

walmartprices.each{|record| record.update_attribute(user: admin) }

для повышения производительности используйте update_all :

Product.where( id: walmartprices.map(&:id) ).update_all( user: admin )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...