Rails: Почему ассоциация "has_many ...,: through => ..." приводит к "NameError: неинициализированная константа ..." - PullRequest
14 голосов
/ 12 августа 2011

Чтобы указать, что в группе может быть несколько пользователей, а пользователь может принадлежать нескольким группам, я установил следующие ассоциации:

class Group < ActiveRecord::Base
  has_many :users_groups
  has_many :users, :through => :users_groups
end

class User < ActiveRecord::Base
  has_many :users_groups
  has_many :groups, :through => :users_groups
end

class UsersGroups < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end

Однако, когда я печатаю:

Group.find(1).users

Я получаю:

NameError: uninitialized constant Group::UsersGroup

Что я делаю не так?

Ответы [ 4 ]

29 голосов
/ 12 августа 2011

class UsersGroups должно быть class UsersGroup.Модели ActiveRecord единичны - таблицы множественные

1 голос
/ 12 августа 2011

я думаю изменить имя класса UserGroups на UserGroup

1 голос
/ 12 августа 2011

ActiveRecord пытается выделить имя, но ваш класс на самом деле называется UserGroups. Переименуйте его в UserGroup. Модели являются единственными.

0 голосов
/ 14 июля 2012

Кроме того, обратите внимание, что имя файла модели также должно быть в единственном числе. В этом случае app/models/user_group.rb

...