我有兩個型號連接()和自定義表名的關聯,其中()請求
Album.rb
class Album < ActiveRecord::Base
has_many :tracks
self.table_name = 'prefix_album'
end
Track.rb現在
class Track < ActiveRecord::Base
belongs_to :album
self.table_name = 'prefix_track'
end
,因爲原因,表名是前綴,所以我有我的數據庫中的prefix_album
和prefix_track
表SE。基本使用,它工作正常。現在
的問題,下面的查詢:
Album.joins(:tracks).where(tracks: { id: [10, 15] })
結果在下面的SQL:
SELECT * FROM "prefix_albums" INNER JOIN "prefix_tracks" ON "prefix_tracks"."album_id" = "prefix_albums"."id" WHERE "tracks"."id" IN (10, 15)
哪些失敗了,因爲WHERE "tracks"."id"
應該是WHERE "prefix_tracks"."id"
。任何想法爲什麼active_record能夠獲得正確的表名.joins(:tracks)
但不是.where(tracks: {})
?
無論如何,我已經想出了這個鍛鍊:Album.joins(:tracks).merge(Track.where(id: [10,15]))
它給出了相同的結果和作品。
但我想知道爲什麼以前沒有工作
嘗試'專輯.joins(:tracks).where(prefix_tracks:{id:[10,15]})' – Pavan