我有以下3个课程:
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
架构图
Factories
- id
Machines
- factory_id
AssemblyJobs
- machine_id
- start_time
- error_time
- finish_time
我想在
factory.rb
中编写一个作用域,以返回任何工厂中具有组装作业且具有error_time的计算机。这是否可能,或者我需要在装配工作中添加一个factory_id列并创建一个Emirates_to关联吗? 最佳答案
您可以通过在joins
方法中输入自定义联接查询来联接没有关联的表:
Model.joins("<CONDITIONS FOR JOIN>")
但是,根据您的情况,您应该可以使用以下查询将具有装配作业的机器的工厂范围
Factory.joins(machines: :assembly_jobs)
这将创建一个嵌套的INNER JOIN,其中仅返回具有一台或多台机器的工厂的一项或多项装配作业。