我需要为a有权查看party_visits
的 a创建一个查询。我有以下型号:location
user
class User < ActiveRecord::Base
has_many :location_permissions
has_many :party_visits
end
class LocationPermission < ActiveRecord::Base
belongs_to :location
belongs_to :user
end
class Party < ActiveRecord::Base
has_many :party_visits
end
class PartyVisit < ActiveRecord::Base
belongs_to :party
belongs_to :user
belongs_to :location
end
所以以下工作:
allowed_locations = current_user.location_permissions.map {|location_permission| location_permission.location_id}
party_visits = PartyVisit.where(location_id: allowed_locations)
问题有时allowed_locations
很大。那么PartyVisit
查询是非常低效的。有没有办法把它变成 1 个高效的 Rails/ActiveRecord 查询?可能不涉及子选择查询?我很想在 Rails 中写这个而不求助于 SQL。