Создайте модель, связанную с 2 другими моделями, используя Rails - PullRequest
2 голосов
/ 18 мая 2011

У меня есть такие модели:

class Person
has_many :groups
has_many :group_memberships, :foreign_key => "member_id"
end

class Group_Membership
 belongs_to :member, :class_name => 'Person'
 belongs_to :group
end

class Group
belongs_to :person
has_many :group_memberships
has_many :members, :class_name => "Person", :through => "group_memberships", :foreign_key => "member_id"
end

Я просто бродил, если человек хочет присоединиться к группе, он создаст группу group_membership, для которой потребуется как идентификатор самого человека, так иГруппа.Если бы я сделал одну кнопку создания без формы в представлении группы, будет правильно?И как будет def create, так как мне придется передать оба идентификатора через build правильно?Спасибо.

1 Ответ

0 голосов
/ 19 мая 2011

Скорее всего, вы создадите GroupMembership из экземпляра Person или Group, поэтому нужен только один идентификатор.Поэтому, когда вы говорите об использовании группового представления - я предполагаю, что вы хотите включить какую-то форму «добавить участника» в ваше представление show , поэтому ваше действие для этой формы может называться create_membershipвыглядеть примерно так:

def create_membership
  @group = Group.find params[:id]
  if @group.group_memberships.create( :member_id => params[:member_id])
    redirect_to @group
  else
     render :action => 'show'
  end
end
...