我尝试在创建后使用email
复制User
属性,但在日志中我收到错误。
我尝试的方法是:
class Car < ActiveRecord::Base
belongs_to :user
attr_accessible :email, :engine
after_create :get_email
def get_email
email = user.email.dup
end
end
有人可以提示吗?
答案 0 :(得分:0)
您的代码中缺少两件事:
self
。的值需要email
email
。因此,在添加self
和save
后,您的get_email
方法应如下所示:
def get_email
self.email = user.email
save
end
请注意,dup
也已删除,因为不需要复制该值(有关dup
here的更多信息)。
也就是说,我建议使用before_create
操作代替after_create
:
class Car < ActiveRecord::Base
belongs_to :user
attr_accessible :email, :engine
before_create :get_email
def get_email
self.email = user.email
end
end
使用:before_crete
,您将从email
复制User
,只需要保存一次对象。如果您使用:after_create
执行此操作,首先要保存对象,然后在email
中查找User
,然后再执行update
(即再次保存) )。