ruby-on-rails - 嵌套每个循环查询错误的列名...模型问题?
问题描述
我有一个显示“事件”的页面,每个事件都有可以分成组的用户......模型看起来像这样 -
事件:
has_many :users, through: :event_users
has_many :event_users
has_many :event_user_groups
事件用户:
belongs_to :event
belongs_to :user
belongs_to :event_user_group, foreign_key: "group_id"
事件用户组:
belongs_to :event
has_many :event_users
因此,在我看来,我想遍历组,然后遍历每个组中的用户,这样我就可以为每个组显示一个副标题以及该组中的用户列表
<% @event.event_user_groups.each do |group| %>
<h4> <%= group.try(:name) %> </h4>
<% group.event_user.each do |user| %>
<%= user.try(:name) %>
<% end>
<% end >
问题是每个循环第二次执行的 SQL 是:
EventWine Load (0.3ms) SELECT "event_users".* FROM "event_users" WHERE "event_users"."event_user_group_id" = $1 [["event_user_group_id", 7]]
并且“event_user_group_id”不是列的名称....它应该是“group_id”
那么我是否可以更改以便使用正确的列名对嵌套的每个循环进行查询?
解决方案
<% group.event_user.each do |user| %>
是错的。应该是group.event_users.each do |event_user|
。你说event_user_groups
has_many :event_users
。所以它将链接到event_users
表格,并且是复数而不是单数。
如果该列确实是 ,也更改has_many :event_users
为。has_many :event_users, foreign_key: :group_id
event_users.group_id
您还可以添加
has_many :users, through: :event_users
event_user_groups
直接访问用户集合。
查看选项has_many
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many
也belongs_to :event_user_group, foreign_key: "group_id"
改为belongs_to :group, class_name: 'EventUserGroup'
. foreign_key
告诉你另一个表中的列。您说您的列已命名event_users.group_id
,因此belongs_to
将与字段名称匹配,但由于您没有一个名为的类,Group
您必须明确告诉它它链接到哪个类。
推荐阅读
- haskell - 如何以及何时使用 State functor 和 State applicative?
- python - 无法加载库 cudnn_ops_infer64_8.dll。错误代码 126 请确保 cudnn_ops_infer64_8.dll 在您的库路径中
- asp.net - 安装自动映射器和映射后构建我的应用程序时出错
- javascript - Set.Attribute 在 for 循环之前
- oauth-2.0 - 如何从 RedHat Openshift 的不记名令牌中获取用户信息?
- r - 无法分配大小为 16.4 Mb R 的向量
- java - OpenFeign + Hystrix - 不同客户端的不同超时
- c# - 如何模拟控制器
- python - 无法从“keras.backend”导入名称“theano_backend”
- c# - UWP MapControl inW WPF 应用程序使用 XAML 岛