#ruby #postgresql
#ruby #postgresql
Вопрос:
У меня есть следующие отношения:
class Location < ApplicationRecord
has_many :weddings
class Wedding < ApplicationRecord
has_many :wedding_memberships
class WeddingMembership < ApplicationRecord
belongs_to :wedding
belongs_to :customer
class Customer < ApplicationRecord
has_many :wedding_memberships
И то, что я хотел бы найти, это Customer
s в Location
с id: 1
Мои попытки WeddingMembership.joins(:wedding).where(wedding: {location_id: 1})
выдают следующие ошибки: Caused by PG::UndefinedTable: ERROR: missing FROM-clause entry for table "wedding"
Комментарии:
1.
WeddingMembership.joins(:wedding).where(weddings: {location_id: 1})
,weddings
, там вам нужно имя таблицы2. @Ursus это работает, однако он возвращается
WeddingMemberships
, когда мне нужноCustomers
Ответ №1:
Попробуйте это, это множественное соединение с предложением where на вашем location_id
Customer.joins(wedding_memberships: :wedding)
.where(weddings: { location_id: 1 })
.distinct
Комментарии:
1. Да, я тоже туда собирался.. но когда я пытаюсь это сделать, я получаю
ActiveRecord::ConfigurationError: Can't join 'Customer' to association named 'wedding'; perhaps you misspelled it?
2. Вы уверены, что пробовали с моим тем же
joins
предложением? Если ваши ассоциации верны, это должно сработать3. Я думаю, вы пропустили
wedding_memberships
вjoins
предложении4. Ааааа, я сделал это
(wedding_memberships: :wedding)
неправильно.. большое спасибо!5. Я, вероятно, пропустил
distinct
в конце