我在游戏和帐户模型之间有多对多的关系,如下所示:
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
的字段,我该如何更新这个属性?你能告诉我最好的方法吗?在我保存对象的同时在直通表中添加任何字段。
答案 0 :(得分:12)
@account = Account.new(params[:user])
@accountgame = @account.account_games.build(:game => Game.first, :score => 100)
@accountgame.save
虽然我强烈建议您开始在连接模型中添加列,并将其称为不同的列,例如“订阅”或“成员资格”或类似内容。一旦你添加了列,它就不再是一个连接模型而只是一个常规模型。
答案 1 :(得分:2)
这应该有效:
class AccountGame < ActiveRecord::Base
belongs_to :account
belongs_to :game
attr_accessible :account_id, :game_id #<======= Notice this line
end