Rails将多个对象添加到空数组中

时间:2014-04-17 21:52:15

标签: ruby-on-rails ruby

我正在尝试创建一个数组并向其添加多个对象,但我不知道如何开始。请帮助。

- 编辑

这是我到目前为止所做的。

@players = @user.players
@team = Team.all
@players.each do |player|
  @t = @team.find(player.team_id)
  @teams = Array.new
  @teams.push(@t)
end

1 个答案:

答案 0 :(得分:2)

您的代码段中发生了很多事情,使其无效(或者至少是不必要的)。你不应该在循环的每次迭代中创建一个新数组。有些事情应该会好得多:

@players = @user.players
@teams = Array.new
@players.each do |player|
  @teams << Team.find(player.team_id)
end

这将解决您原来的问题,但它肯定不是解决您尝试做什么的最佳方式。将以下内容添加到您的PlayerUser模型中:

class Player < ActiveRecord::Base
  belongs_to :team
end

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

然后,为了获得您正在寻找的团队,您可以将代码简化为以下内容:

@teams = @user.teams

您应该尝试不仅查看ruby arrays的文档,还查看Active Record Associations的Rails指南。此外,在将来尝试首先发布代码片段,以便为您的问题提供更多上下文。