首页 > 解决方案 > 如何编写从返回 ActiveRecord 关系的连接表(使用自定义类关联)返回列的查询

问题描述

class Event < ApplicationRecord
    belongs_to :event_type, :class_name => 'Keyword', :foreign_key => :event_type_id, optional: false
    belongs_to :promotion_type, :class_name => 'Keyword', :foreign_key => :promotion_type_id, optional: false    
end

class Keyword < ApplicationRecord
    has_many :events
end

我正在尝试编写一个从连接表返回列的查询,但是如果我使用它似乎只能创建一个工作查询Pluck- 我不希望使用它,因为它可以确保查询返回一个数组。我需要查询来返回 ActiveRecord 关系。

这是使用 Pluck 工作的查询。(返回数组)

Event.joins(:event_type).pluck('event.id, event.name, keywords.name')

当我尝试使用 Select 连接表列时,结果中没有出现。(返回我需要的 ActiveRecord 关系)

Event.joins(:event_type).select('event.id, event.name, keywords.name')

我显然错过了一些简单但卡住的东西。任何人都可以帮忙吗?

标签: ruby-on-railsactiverecord

解决方案


我最终调整了我的模型以删除自定义类。一旦我这样做了,查询就会像我一直期望的那样工作。

Event.joins(:event_type).select('event.id, event.name, keywords.name')

结案。


推荐阅读