2016-04-05 3 views
0

У меня есть этот 3 класс:Могу ли я присоединиться к таблице без ассоциации? (Рельсы/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 

Schema

Factories 
- id 

Machines 
- factory_id 

AssemblyJobs 
- machine_id 
- start_time 
- error_time 
- finish_time 

Я хочу быть написать область в factory.rb возвратить любые заводы, которые имеют какую-либо машину с монтажными работами с error_time , Возможно ли это, или мне нужно добавить столбец factory_id в задание сборки и создать ассоциацию belongs_to?

ответ

1

Вы можете присоединиться к таблицам без ассоциации, введя пользовательский запрос с соединением в методе joins:

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

Однако в вашем случае вы должны иметь возможность охвата заводов с машинами, имеющими сборку задания с помощью следующего запроса

Factory.joins(machines: :assembly_jobs) 

Это создаст вложенный INNER JOIN, где будут возвращены только заводы с одной или несколькими машинами, имеющими одну или более сборочный работу.

Смежные вопросы