У меня есть 3 таблицы в моей базе данных
- Пользователь (id, имя пользователя, электронная почта, pwd и т. д.)
- Производитель (id, user_id)
- Адрес (first_name, город, addressable_id и т. д.)
У производителя есть ссылка с таблицей пользователей (User.id = Producer.user_id) и таблицей адресов (p.id = Address.addressable_id)
Теперь я хочу получить все адреса производителей с его именем пользователя.
Я пытаюсь выполнить следующий запрос, но он не дает ожидаемого результата
select u.login, p.id, a.city from producers p
join users u on u.id = p.user_id
join addresses a on a.addressable_id = p.id
Мои модели и отношения
user.rb
class User < ActiveRecord::Base
has_one :customer
has_one :producer
end
producer.rb
class Producer < ActiveRecord::Base
belongs_to :user
belongs_to :updated_by_user, :class_name => "User", :foreign_key => "updated_by_user_id"
has_one :address, :as => :addressable
has_many :items
end
address.rb
class Address < ActiveRecord::Base
belongs_to :addressable, :polymorphic => true
belongs_to :updated_by_user, :class_name => "User", :foreign_key => "updated_by_user_id"
end
addresses
? В настоящее время вы присоединяетеaddressable_id
кproducers
уникальномуid
— вам, вероятно, следует присоединять полеproducer_id
в таблицеaddresses
кproducers
уникальномуid
. - person   schedule 31.10.2012