因此,我有两个模型:User
和Group
。在创建单独模型期间创建模型的Rails最佳实践
User belongs_to :group
和
Group has_many :users
。
创建新的User
时,我想检查已创建的Group
并分配它们,或者根据用户提供的信息创建新的Group
。 Group.find_or_create_by_name("Name")
似乎是一个很好的方式来做到这一点,但我的问题是这应该在哪里?我猜,继“胖模特,瘦瘦的控制者”之后,它应该在user.rb
。如果它在模型中,在用户创建时传递用户提供的字符串的最佳方式是什么?我是否应该在user.rb
中设置方法,然后在users_controller.rb
中调用该方法?
我猜一个相关的问题:我知道,我的架构应该反映
create_table "users" do |t|
t.integer "group_id"
查询的目的。 Rails如何“自动地”链接这些?在创建我的Group
模型时,我猜测它需要有一个string:id
列,而Rails只是将两者链接起来?
对不起,我明显缺乏对关联的理解,但我试图不只是一起攻击一些笨拙的工作,并且要确保我理解了解决这个问题的最佳方法。
是的,一个'User'只能属于一个'Group',所以'Membership'关联模型的额外的抽象会不必要的(虽然我甚至没有考虑过,谢谢)。 – oflannabhra
此外,为了确保我理解正确:在你创建'用户#创建''Group'的示例中,不需要赋值?也就是说,我不需要像'@ user.group_id = @ group.id'那样做一些事情? – oflannabhra
@oflannabhra是的,你将不得不。除非你做'@ group.users.build(params [:user])''。我更新了两种情况下的答案。 –