ruby-on-rails - 在活动管理员中循环
问题描述
我想将键和值对添加到结果(一行)中,所以我这样做了:
row :skill_level do |user|
level = {}
user.try(:sport_memberships).each do |sport|
sport_name = Sport.where(id: sport.try(:sport_id)).try(:name)
sport_level = sport.try(:level)
level = level.merge!("#{sport_name.to_sym}" => sport_level)
end
end
模型的关联是:
user.rb
has_many :sport_memberships,
inverse_of: "user",
class_name: "Sport::Membership"
运动.rb
has_many :memberships
会员资格.rb
belongs_to :sport, inverse_of: "memberships", counter_cache: true
belongs_to :user, inverse_of: "sport_memberships"
我预计该级别将返回如下值:{badminton: 2, golf: 2},但实际结果是:[#<Sport::Membership id: 5024, sport_id: 4, user_id: 976, level: 2, tribe_id: nil>, #<Sport::Membership id: 5025, sport_id: 14, user_id: 976, level: 2, tribe_id: nil>]
. 看来我的循环没有按我的预期运行。我该如何解决我的问题?
解决方案
首先覆盖控制器动作
未测试
def index
super
@levels = User.joins(sport_memberships: :sport).where(id: resource.id).select("sports.name, sport_memberships.level").group("sports.name, sport_memberships.level")
end
请尝试此查询,让我知道它是否有效。
推荐阅读
- python - Pandas 如何计算两个 DataFrame 之间的更新
- amazon-web-services - 我坚持连接 AWS Elastic Beanstalk 和 RDS
- bash - Loop Script 通过执行 touch 抛出 0
- c# - 获取特定位置的像素
- jquery - jquery 单选点击功能到很多结果
- java - 在java中使用jetty发送一个json对象
- c# - 在等待响应时尝试在循环中使用延迟
- c# - JSONRpc Client over websocket C#
- clearcase - 如何知道 Clearcase 服务器视图是什么?
- html - CSS 和 HTML 4.0 错误导致富文本方法(QT)中的空格