我在游戏和帐户模型之间有多对多的关系,如下所示:
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
尽管我强烈建议您开始将列添加到联接模型中,但您将其称为不同的名称,例如“订阅”或“成员身份”或类似名称。一旦添加了列,它就不再是联接模型,而仅仅是常规模型。