当新用户注册时,我必须在我的数据库中填充一个字段。但是该字段不是由用户填充,而是由数据库中的应用程序填充。这是我试过的:
重写设计控制器:
def创建
超级
if @ user.save
@ user.investorId = @ user.id + X --->一些数字
@ user.save
结束
端
虽然它工作正常,但我想知道是否有更好的方法,因为我是第一次这样做。
谢谢, 萨钦
答案 0 :(得分:1)
如果您需要在创建记录之前生成值,则可以使用模型上的before_create
或after_create
回调。
User < ActiveRecord::Base
after_create :generate_investor_id
private
def generate_investor_id
reload
investor_id = "#{self.id}something"
update_attribute(:investor_id, investor_id)
end
end
答案 1 :(得分:1)
不要覆盖您的设备控制器,这样做没有任何好处。只需将以下逻辑放在User < ActiveRecord::Base
after_create :create_investor_id
private
def create_investor_id
self.update_column(:investor_id, id+some_number)
end
end
回调 -
foo