Рельсы - Модель Сомнения - PullRequest
0 голосов
/ 23 мая 2011

Учитывая тот факт, что у меня есть такие модели:

class Person
  has_many :owned_groups, :class_name => "Group", :foreign_key => :owner_id
  has_many :owned_group_memberships, :through => :owned_groups, 
              :source => :group_memberships 

  has_many :group_memberships, :foreign_key => "member_id"
  has_many :groups, :through => :group_memberships

end

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

class Group
  belongs_to :owner, :class_name => "Person"
  has_many :group_memberships
  has_many :members, :through => :group_memberships
end

Как я могу получить доступ к members a group? Я всегда делаю @group.members или что-то в этом роде, выдает ошибку, в которой говорится, что отношение не может быть найдено в модели.

Заранее спасибо.

## РЕДАКТИРОВАНИЕ ##

Я получаю ошибку: Could not find the association "group_memberships" in model Group

Ответы [ 2 ]

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

Вам может потребоваться указать: class_name => 'Person' в вашем заявлении has_many: members.

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

Я делаю похожую вещь на сайте, над которым я работаю, но ассоциации немного отличаются от того, как вы это делаете, но, возможно, это поможет. Я думаю, что вам нужно использовать ассоциацию has_and_belongs_to_many, чтобы объединить ваши многие-ко-многим.

В моей базе данных есть пользователи, пользователи и пользователи. Члены

Вам не нужно создавать модель UsersMembers (в вашем случае GroupMembership), но вам нужна таблица базы данных, чтобы связать их.

#Migration
    create_table :bands_users, :id => false, :force => true do |t|
      t.integer :band_id,       :null => false
      t.integer :user_id,       :null => false
    end

#Models
  class Band < ActiveRecord::Base
    has_and_belongs_to_many :members, :class_name => 'User'
  end

  class User < ActiveRecord::Base
    has_and_belongs_to_many :bands
  end

Теперь я могу позвонить @ band.members или @ user.bands

...