注册期间将帐户ID传递给新用户

时间:2012-09-20 03:54:24

标签: ruby-on-rails ruby-on-rails-3 devise

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

1 个答案:

答案 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