Rails:为什么“has_many ...,:through => ...”关联导致“NameError:uninitialized constant ...”

时间:2011-08-12 12:25:38

标签: ruby-on-rails ruby-on-rails-3 associations has-many-through

为了表示一个组可以拥有多个用户,并且一个用户可以属于多个组,我设置了以下关联:

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 个答案:

答案 0 :(得分:29)

class UsersGroups应为class UsersGroup。 ActiveRecord模型是单数 - 表格是复数。

答案 1 :(得分:1)

ActiveRecord尝试将名称单一化,但您的类实际上名为UserGroups。将其重命名为UserGroup。模型是单一的。

答案 2 :(得分:1)

我认为将用户组类更改为用户组

答案 3 :(得分:-1)

此外,请注意模型的文件名也必须是单数形式。 在这种情况下,app/models/user_group.rb