暂时,我的应用程序是使用Devise进行身份验证而设计的。我知道,当第一个用户注册时,会在Accounts表中创建一个帐户,并将account_id传递给User表。我也设置了它,以便每次创建一个新帐户时,用户被标记为管理员。最后,我让它在管理员可以创建新用户的地方工作。
我的问题是,在创建新用户时,我需要为这些用户分配与管理员相同的account_id,以便将用户绑定在一起。如果我在表单上添加一个account_id字段并让管理员手动输入它,我可以这样做。我想要的是,这是在后台自动完成的。
我尝试了许多品种而没有成功。这是我将以下内容放在user.rb
中的不成功尝试之一before_save :add_account_id_from_parent
def add_account_id_from_parent
return true unless self.users.present?
self.users.update_attribute(:account_id, 1)
end
我使用数字“1”只是为了看看我是否可以获得任何自动化并放置在该字段中。
就像我手动说一切正常,但我想要它,以便在注册时根据管理员account_id自动添加acocunt_id。
答案 0 :(得分:0)
我有点困惑为什么你打电话给self.users
。如果我理解正确,您希望在创建新用户(作为测试)后将account_id
分配给1
。你可以这样做:
before_save :add_account_id_from_parent
def add_account_id_from_parent
self.account_id = 1
end
您不需要实际更新记录,因为在保存之前已分配,而save会将新值写入db。
我可能会遗漏一些东西,如果是的话请澄清。
<强>更新强>:
如果您确认存在account
,则需要将回调更改为before_validation
而不是before_save
,如下所示:
before_validation :add_account_id_from_parent