我在游戏和帐户模型之间有多对多的关系,如下所示:

class Account < ActiveRecord::Base
  has_many :account_games, :dependent => :destroy
  has_many :games, :through => :account_games
end

class Game < ActiveRecord::Base
  has_many :account_games, :dependent => :destroy
  has_many :accounts, :through => :account_games
end

class AccountGame < ActiveRecord::Base
  belongs_to :account
  belongs_to :game
end

现在我知道要创建一条类似以下内容的记录:
@account = Account.new(params[:user])
@account.games << Game.first
@account.save

但是,在执行此操作时,我应该如何更新AccountGame中的某些属性?可以说AccountGame有一个名为score的字段,我将如何更新此属性?你能告诉我最好的方法吗?要在保存对象时在穿透表中添加任何字段。

最佳答案

@account = Account.new(params[:user])
@accountgame = @account.account_games.build(:game => Game.first, :score => 100)
@accountgame.save

尽管我强烈建议您开始将列添加到联接模型中,但您将其称为不同的名称,例如“订阅”或“成员身份”或类似名称。一旦添加了列,它就不再是联接模型,而仅仅是常规模型。

09-25 16:17