I would like ActiveRecord to set some DB field automatically using callbacks.
class Product < ActiveRecord::Base
after_create :set_locale
def set_locale
self.locale = I18n.locale
end
end
In ./script/console I do
p = Product.create
p
Field p.locale is not set. What did I do wrong?
before_create is called before Base.save, since your not saving its not getting called.
Edit:
class Product < ActiveRecord::Base
before_create :set_locale
def set_locale
self.locale = I18n.locale
end
end
With this in your controller will work how you want it to.
@product = Product.create # before_create will be called and locale will be set for the new product
Use before_create
to set default values. Remember: after_create
is fired after the save to the database. Using after_create
will only initialize the values in memory, and will require additional save to commit the initialized values to the database.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With