开发者

Rails: Setting attribute in after_create

开发者 https://www.devze.com 2022-12-20 23:07 出处:网络
I would like ActiveRecord to set some DB field automatically using callbacks. class Product < ActiveRecord::Base

I would like ActiveRecord to set some DB field automatically using callbacks.

class Product < ActiveRecord::Base
   after_create :set_locale
   def set_locale
     开发者_Python百科 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.


what Joey is saying is that after_create will not work.

use before_create

0

精彩评论

暂无评论...
验证码 换一张
取 消