0

目前,我的应用程序是使用 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。

4

1 回答 1

0

我有点困惑你为什么打电话self.users。如果我理解正确,您希望在创建新用户后分配(作为测试)account_id1你可以这样做:

before_save :add_account_id_from_parent

def add_account_id_from_parent
  self.account_id = 1
end

您不需要实际更新记录,因为这是在保存之前分配的,并且保存会将新值写入数据库。

再次,我可能会遗漏一些东西,如果是这样,请澄清。

更新

如果您正在验证它account是否存在,则需要将回调更改为 abefore_validation而不是before_save,如下所示:

before_validation :add_account_id_from_parent
于 2012-09-20T04:02:36.000 回答