使用关联模型范围的活动记录查询
Active record query using associated model scope
型号Food
有很多Requests
class Food < ActiveRecord::Base
has_many :requests
# scope :where_has_requests, -> { includes(:requests).where.not(requests: { id: nil }) }
end
Requests
可能属于User
class Request < ActiveRecord::Base
# belongs_to :giver, class_name: 'User'
# belongs_to :receiver, class_name: 'User'
scope :where_belongs_to, ->(user) { where(giver_id: user.id ).or(where(receiver_id: user.id)) }
end
如何使用请求范围查询具有属于给定 User
的 Requests
的 Food
?
Food.joins(:requests).where("requests.giver_id=#{user.id} OR requests.receiver_id=#{user.id}")
我一直在想这个:
Food.joins(:requests).where(requests.where_belongs_to(user))
但是我迷路了。有什么想法吗?
通知
我在 之前看过 我有post这个问题,虽然我不太理解它,我认为情况有所不同.
您可能需要执行以下操作:
Food.joins(:requests).merge(Request.where_belongs_to(user))
型号Food
有很多Requests
class Food < ActiveRecord::Base
has_many :requests
# scope :where_has_requests, -> { includes(:requests).where.not(requests: { id: nil }) }
end
Requests
可能属于User
class Request < ActiveRecord::Base
# belongs_to :giver, class_name: 'User'
# belongs_to :receiver, class_name: 'User'
scope :where_belongs_to, ->(user) { where(giver_id: user.id ).or(where(receiver_id: user.id)) }
end
如何使用请求范围查询具有属于给定 User
的 Requests
的 Food
?
Food.joins(:requests).where("requests.giver_id=#{user.id} OR requests.receiver_id=#{user.id}")
我一直在想这个:
Food.joins(:requests).where(requests.where_belongs_to(user))
但是我迷路了。有什么想法吗?
通知
我在
您可能需要执行以下操作:
Food.joins(:requests).merge(Request.where_belongs_to(user))