Направляющие: Установка атрибута в after_create

Я хотел бы, чтобы ActiveRecord установил некоторое поле DB автоматически с помощью обратных вызовов.

class Product < ActiveRecord::Base
   after_create :set_locale
   def set_locale
      self.locale = I18n.locale
   end
end

В./script/console я делаю

p = Product.create
p

Поле p.locale не установлено. Что я делал неправильно?

6
задан lulalala 28 May 2013 в 09:47
поделиться

2 ответа

before_create is вызывается перед Base.save , так как вы не сохраняете его, не вызывается.

Edit:

class Product < ActiveRecord::Base
   before_create :set_locale
   def set_locale
      self.locale = I18n.locale
   end
end

С этим в вашем контроллере будет работать так, как вы хотите.

@product = Product.create # before_create will be called and locale will be set for the new product
9
ответ дан 9 December 2019 в 20:42
поделиться

что говорит Джои в том, что after_create не будет работать.

используйте before_create

1
ответ дан 9 December 2019 в 20:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: