0

我收到此错误:

NameError in GamesController#create
uninitialized constant User::UsersGame
app/controllers/games_controller.rb:43:in `create'

这令人困惑,因为我不知道它为什么引用 UsersGame 而不是 UserGame ...

我尝试重命名事物,取出新方法(仍然让我感到困惑,为什么 new 和 create 都需要,但我认为我理解它们都需要在那里),并弄乱我的迁移以确保我有正确的表,但我无法让它工作。用户类本身与设计一起工作,所以我认为这不是问题。无论如何,这里是下面的相关文件。

模型中的 users_games.rb 作为连接表

class UserGame < ActiveRecord::Base
  belongs_to :user
  belongs_to :game
end

模型中的 user.rb

class User < ActiveRecord::Base
  has_many :users_games
  has_many :games, :through => :users_games
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me
end

模型中的 game.rb

class Game < ActiveRecord::Base
  has_many :users_games
  has_many :users, :through => :users_games
#  has_many :turns, :dependent => :destroy

  attr_accessible :name, :creator
end
4

1 回答 1

1

实际上你需要使用has_and_belongs_to_many而不是has_many through.

has_and_belongs_to_many :games , join_table: 'users_games'

如果您将连接表更改为 games_users,则只需使用:

has_and_belongs_to_many :games

请按照以下说明操作:

嵌套形式和习惯

有关 habtm 的更多信息(以避免重复输入):

HABTM 上的 Rails 嵌套表单:如何防止重复输入?

希望有帮助

于 2013-06-20T00:43:23.813 回答