【发布时间】:2019-11-16 18:10:10
【问题描述】:
在我的应用程序中,我有一个 Event 模型,它基本上代表两个用户之间的预订。它有一些关于事件的基本属性以及booker_id 和bookee_id,它们都代表User 表中的外键。
基本上,我正在尝试为事件组合一个搜索方法,该方法允许我按预订者或预订者的名字和姓氏进行搜索。但我不知道如何在一个查询中同时引用bookee 用户和booker 用户。下面是我的事件模型,显示了我设置的事件搜索类方法的关联和基本版本。不幸的是,它似乎只引用了事件bookers 的用户表,而不是bookees。我可能只需要检查我的 SQL 并写一些更难看的东西,但是如果有人有一种直接的方法来调整该查询,以便它可以包含并引用 bookee 用户和 booker 用户的 User 表会很有帮助的。
事件.rb
belongs_to :booker, :foreign_key => :booker_id, class_name: 'User'
belongs_to :bookee, :foreign_key => :bookee_id, class_name: 'User'
def self.search(search)
if search
search_term = "%#{search}%"
includes(:booker, :bookee).where(["users.first_name ILIKE :term OR users.last_name ILIKE :term OR event_title ILIKE :term", {term: search_term}]).references(:booker, :bookee)
end
end
用户.rb
has_many :booker_events, :foreign_key => :booker_id, class_name: 'Event', dependent: :nullify
has_many :bookee_events, :foreign_key => :bookee_id, class_name: 'Event', dependent: :nullify
【问题讨论】:
标签: sql ruby-on-rails postgresql activerecord