データベースに3つのテーブルがあります
- ユーザー(ID、ユーザー名、電子メール、pwdなど...)
- プロデューサー(id、user_id)
- 住所(first_name、city、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