2016-04-05 11 views
0

Bunları 3 sınıfları:İlişkilendirme olmadan bir tabloya katılabilir miyim? (Raylar/SQL)

class Factory < ActiveRecord::Base 
    has_many :machines 
end 

class Machine < ActiveRecord::Base 
    belongs_to :factory, inverse_of: :machines 
    has_many :assembly_jobs, inverse_of: :machines 
end 

class AssemblyJob < ActiveRecord::Base 
    belongs_to :machines, inverse_of: :assembly_jobs 
end 

Şema

Ben error_time ile montaj işleri ile herhangi makineleri var herhangi fabrikalar dönmek için factory.rb bir kapsam yazmak olmak istiyorum
Factories 
- id 

Machines 
- factory_id 

AssemblyJobs 
- machine_id 
- start_time 
- error_time 
- finish_time 

. Bu mümkün mü yoksa montaj işi için bir factory_id sütun eklemeli ve bir sendikaya oluşturulmalı mı?

cevap

1

Bir ilişkilendirme olmadan tabloları katılabilir özel joins yönteminde sorgu katılmak girerek:

Model.joins("<CONDITIONS FOR JOIN>") 

Ancak, sizin durumunuzda, fabrikaları, montajı olan makinelerle gerçekleştirebilmeniz gerekir. Aşağıdaki sorguyu kullanarak işler

Factory.joins(machines: :assembly_jobs) 

Bu, bir veya daha fazla montaj işi olan bir veya birden fazla makineleriyle sadece fabrikalar iade edilecektir nerede yuvalanmış INNER JOIN yaratacaktır.

İlgili konular