Ruby on rails 使用has\u one或has\u MUN时自动将新记录插入关联

Ruby on rails 使用has\u one或has\u MUN时自动将新记录插入关联,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,现在我有两个表,用户和角色,当然角色有一个用户id,角色模型有属于:user,用户模型有有一个:role。我想知道的问题是,如何让用户模型在角色模型中创建新记录。我知道我可以在模型之外做这件事,就像我创建用户一样简单,但我认为如果我在用户模型中做这件事,它可能会更加精简,并将所有内容保持在一个位置,并简化它。对于如何在保存之前不知道用户id的情况下轻松执行此操作,是否有任何建议 注意:(我只在new_record?为真时才允许这样做,否则将被禁止。)我正在对用户及其设置进行类似的操作,这可能对您

现在我有两个表,用户和角色,当然角色有一个用户id,角色模型有
属于:user
,用户模型有
有一个:role
。我想知道的问题是,如何让用户模型在角色模型中创建新记录。我知道我可以在模型之外做这件事,就像我创建用户一样简单,但我认为如果我在用户模型中做这件事,它可能会更加精简,并将所有内容保持在一个位置,并简化它。对于如何在保存之前不知道用户id的情况下轻松执行此操作,是否有任何建议


注意:(我只在new_record?为真时才允许这样做,否则将被禁止。)

我正在对用户及其设置进行类似的操作,这可能对您有用:

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
class用户

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

如果用户只有一个角色,为什么要为角色使用一个单独的表,而不是仅仅通过迁移将角色列添加到用户模型中?@entropy\u 9我想你可能混淆了“has\u one”创建的关联?仅仅因为用户在角色表中有一行,并不意味着他们只有一个绝对角色。是的,我认为人们更喜欢使用has_许多(我已经看到有很多次使用has_很多次了),但是当表中的行上存在角色和用户的一对一关联时,有什么意义呢?除非我误解了文档,否则这只会造成效率低下。啊,好吧,我一定是误解了OP。在我过去遇到的类似问题中,我只是在用户表中添加了一个“角色”字段,指定了迁移中的默认角色(例如用户/来宾),所以我在最初的评论中依赖于此。