user.rb
has_many :groups, :through => :group_members, :conditions => ['banned = ?', false]
group.rb
belongs_to :user
群组控制器:
group = current_user.groups.new(:uuid => group_uuid)
group.inspect的Rails.logger.info显示group.user_id为nil?为什么...当我执行current_user.groups.new()时,不应该自动设置group.user_id吗?
由于
答案 0 :(得分:0)
我认为您遇到的问题是您的关联不一致。在user.rb
中,您有一个has_many :through
关系,这意味着用户和组之间的关联将存储在表group_members
中。在group.rb
中,您有一个belongs_to
关联,这意味着关联将存储在名为groups
的{{1}}上的列中。
当用户可以属于多个组时,您通常会使用user_id
类型关联,而组可以包含多个用户(多对多关联)。如果一个组中只能有一个用户,或者一个用户只能属于一个组,则应使用has_many :through
类型关联。
我假设您希望用户属于多个组,并且组要拥有多个用户。如果是这种情况,您可以通过将以下内容添加到belongs_to
group.rb
答案 1 :(得分:0)
<强> group.rb 强>
belongs_to :owner, :class => 'User', :foreign_key => :user_id
has_many :group_members
has_many :users, :through => :group_members
<强> user.rb 强>
has_many :own_groups, :class => 'Group', # own groups
has_many :group_members
has_many :groups, :through => :group_members
<强> group_member.rb 强>
belongs_to :group
belongs_to :user
group = current_user.groups.new(:uuid => group_uuid)