Ben(katılır) ve özel tablo adı ile ortaklık konulu nerede() isteği
class Track < ActiveRecord::Base
belongs_to :album
self.table_name = 'prefix_track'
end
Şimdi iki model
Album.rb
class Album < ActiveRecord::Base
has_many :tracks
self.table_name = 'prefix_album'
end
Track.rb var nedenleri nedeniyle tablo adları öneki, bu yüzden benim databa içinde prefix_album
ve prefix_track
tabloları var se. Temel kullanım için iyi çalışıyor.
Şimdi aşağıdaki sorgu ile sorun: Aşağıdaki SQL
Album.joins(:tracks).where(tracks: { id: [10, 15] })
Sonuçlar: WHERE "tracks"."id"
WHERE "prefix_tracks"."id"
olmalıdır çünkü başarısız
SELECT * FROM "prefix_albums" INNER JOIN "prefix_tracks" ON "prefix_tracks"."album_id" = "prefix_albums"."id" WHERE "tracks"."id" IN (10, 15)
. Active_record neden .joins(:tracks)
için doğru tablo adını alabilir, ancak .where(tracks: {})
için uygun değil?
Her neyse, bu çalışmayı anladım: Album.joins(:tracks).merge(Track.where(id: [10,15]))
, aynı sonucu ve çalışmayı verir.
Ama eski programından neden bilmek istiyorum
deneyin 'Albüm:
Sen gibi modele
table_name
ekleyebilir .joins (: tracks) .where (prefix_tracks: {id: [10, 15]}) ' – Pavan