gpt4 book ai didi

ruby-on-rails - 将多个对象合并在一起的更有效方法

转载 作者:太空宇宙 更新时间:2023-11-03 18:15:25 26 4
gpt4 key购买 nike

所以我试图创建一个包含多个对象的数组,但首先我需要将两种对象合并为一个,然后将其添加到数组中。这样做的原因是我可以在 View 中循环遍历数组并轻松显示内容。我正在处理树状不同的对象、用户、玩家和团队。一个用户通过玩家拥有多个玩家和多个团队。我需要直观地显示来自团队对象和球员对象的信息,但我需要将它们合并为一个对象并将其插入到一个数组中。因此,我将为玩家拥有的每个团队/玩家执行此操作,并将它们插入到一个数组中以容纳它们。

这是我的破解方法

    array = []
@user.players.each do |player|
@user.teams.each do |team|
if player.team_id == team.id
array << UserTeam.new(:id => team.id,
:name => team.name,
:tag => team.tag,
:description => team.description,
:recruiting => team.recruiting,
:wins => team.wins,
:losses => team.losses,
:t_wins => team.t_wins,
:rating => team.rating,
:role => player.role,
:position => player.position)
end
end
end
@teams = array

这行得通并且我得到了我想要的结果,但我确信这是一种非常低效的方法。这样做的更好方法是什么?任何人都可以帮助新手开发 Rails 吗?

最佳答案

很难确定您实际上将所有内容都集中到一个对象中的原因。您打算如何处理结果?如果这只是为了显示目的,您可以使用更简单、更优雅的东西。

假设

模型

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

class Player < ActiveRecord::Base
belongs_to :user
belongs_to :team
end

class Team < ActiveRecord::Base
has_many :players
end

Controller

@players = @user.players.includes(:team)

查看

<table>
<thead>
<tr>
<th>Team Id</th>
<th>Team Name</th>
<!-- other team columns -->
<th>Player Role</th>
<th>Player Position</th>
</tr>
</thead>
<tbody>
<% @players.each do |player| %>
<tr>
<td><%= player.team.id %></td>
<td><%= player.team.name %></td>
<!-- other columns -->
<td><%= player.role %></td>
<td><%= player.position %></td>
</tr>
<% end %>
</tbody>
</table>

关于ruby-on-rails - 将多个对象合并在一起的更有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27075473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com