使用has_one或has_many时自动将新记录插入关联

时间:2012-06-12 20:27:25

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

现在我有两个表,用户和角色,当然角色有一个user_id,角色模型有belongs_to :user,用户模型有has_one :role。我想知道的问题是,如何让User模型在Role模型中创建新记录。我知道我可以在模型之外做这个,就像我创建用户一样容易,但我认为它可能更简化并将所有内容保存在一个位置并简化它,如果我在用户模型中这样做。有关如何在不知道用户身份之前我可以轻松完成此操作的建议吗?

注意:(我只允许在new_record?为true时使用,否则将被禁止。)

1 个答案:

答案 0 :(得分:0)

我正在做类似于用户和&他们的设置,可能这对你有用:

class User < ActiveRecord::Base

#...

has_one :role
before_create :build_a_role

private
  def build_a_role
    self.build_role(role_att: value)
  end
end

然后,当用户保存时,角色也会保存。