2012-03-18 5 views
3

У меня есть модель пользователя, которая имеет множество тележекСохранить все атрибуты Rails модели

class User < ActiveRecord::Base 
    has_many :carts 

Если я обновлю корзину

User.last.carts.last.time_purchased = Time.now 

Есть ли способ я могу сохранить всю пользовательскую модель? Теперь, если я позвоню

User.last.save 

Тележка, которую я модифицировал, не сохраняется.

User.last.carts.last.save 

Сохраняет корзину.

Есть ли способ сохранить все обновленные атрибуты модели?

Благодаря

ответ

2

Сохранение модели будет сохранить любой из его ассоциаций, но причина, это не работает для вас потому что вы повторно выбираете модель User вместо того, чтобы изменять и сохранять один и тот же экземпляр.

Сохранение пользователя также должно сохраняться в соответствующей тележке.

2

Это потому, что вы выборки копии телеги, изменяя его, а затем извлечение другой копии телеги и сохранения что.

Вы должны сохранить корзину в переменной, а затем применить к ней сохранение. Например:

cart = User.last.carts.last 
cart.time_purchased = Time.now 
cart.save 

В качестве альтернативы, вы можете использовать update_attribute, как это:

User.last.carts.last.update_attribute(:time_purchased, Time.now) 
Смежные вопросы