【问题标题】:ActiveRocord query with polymorphic associations具有多态关联的 ActiveRocord 查询
【发布时间】:2016-06-02 10:09:17
【问题描述】:

我正在尝试从表中获取一些记录,但我不知道如何构建此查询。

我有一些模型。

class Request < ActiveRecord::Base
  has_many :notifications, as: :source
  has_many :decisions, dependent: :destroy
end

class Notification < ActiveRecord::Base
  belongs_to :source, polymorphic: true
end

class Decision < ActiveRecord::Base
  has_many :notifications, as: :source
  belongs_to :request
end

所以,我需要获取 source = some_request 或 source.request = some_request 的所有通知

【问题讨论】:

  • some_request 我假设你的意思是它是Request 的一个实例?如果是这样,那为什么不直接使用关联呢? some_request.notifications

标签: sql ruby-on-rails postgresql ruby-on-rails-4 activerecord


【解决方案1】:

是不是很简单——

some_request.notifications
# or
some_decision.notifications

如果来源是请求和决策的组合,那么

notifications_ids = some_request.notifications.pluck(:id) +
some_decision.notifications.pluck(:id)

Notification.find(notifications_ids)

【讨论】:

    【解决方案2】:

    您的查询应该是Notification.where(source_id: some_request.id, source_type: 'Request')

    参考Active record association

    【讨论】:

      猜你喜欢
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 2010-10-15
      • 2018-10-31
      • 1970-01-01
      • 2019-07-28
      • 1970-01-01
      相关资源
      最近更新 更多