Я хотел бы, чтобы 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 не установлено. Что я делал неправильно?
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
что говорит Джои в том, что after_create не будет работать.
используйте before_create