有没有一种方法可以更新多个对象上的属性? 每当他们的团队的得失更新时,我都在尝试更新用户的得失。

我将三个模型链接在一起。

玩家属于团队。 我正在努力做到这一点,以便当用户加入团队时,它将创建具有其姓名和角色的玩家。

class Player < ActiveRecord::Base
    belongs_to :team
end

球队有很多球员。 球队持有姓名:字符串胜利:整数损失:整数。

class Team < ActiveRecord::Base
    has_many :players, dependent: :destroy
end

用户通过玩家拥有许多团队。 因此,用户是他们加入的团队的参与者。 创建新玩家时,用户会将其姓名链接到玩家。 用户持有姓名:字符串电子邮件:字符串获胜:整数丢失:整数

class User < ActiveRecord::Base
    has_many :players, dependent: :destroy
    has_many :teams, through: :players
end

所以在这一点上,我想做的是,当我更新一支球队的胜负时,玩家也将获得这些胜负的最新信息。 我该如何解决? 我曾尝试将所有团队的用户加载到一个实例变量中,但它有多个玩家,因此我无法从那里更新胜利。

===============>>#1 票数:0

我不了解您的其余应用程序,但是根据您的问题,我建议您制作另一个模型Matches 您可以通过has_many将其连接到Team 然后,您可以简单地向团队添加获胜/失败的比赛并设置模型,以便创建类似

模型应如下所示。 如果希望多个团队进行相同的比赛并保存结果而不重复,则可以更好地进行设置(比赛可以有多个外键,例如team1_idteam2_id )。 或者,如果您还想进行比赛,保存比分等。对于您要问的问题,我只添加了一个属性won

class Team < ActiveRecord::Base
  has_many :players, dependent: :destroy
  has_many :matches  
end

class Match < ActiveRecord::Base
  belongs_to :team

  def self.won
    where(won: true)
  end

  def self.lost
    where(won: false)
  end
end

现在,该查询应该可以工作了:

team.matches.won.count

向团队添加比赛应该很简单:

team.matches.create(won: true)

  ask by linogomez translate from so

未解决问题?本站智能推荐: