我有这 3 个类(class):
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
中编写一个范围,以返回任何具有错误时间的装配作业机器的工厂。这是可能的还是我需要向组装作业添加factory_id列并创建belongs_to关联?
最佳答案
您可以通过在 joins
方法中输入自定义联接查询来联接没有关联的表:
Model.joins("<CONDITIONS FOR JOIN>")
但是,在您的情况下,您应该能够使用以下查询来确定具有组装作业的机器的工厂范围
Factory.joins(machines: :assembly_jobs)
这将创建一个嵌套的 INNER JOIN,其中仅返回具有一台或多台具有一项或多项组装作业的机器的工厂。
关于mysql - 我可以加入没有关联的表吗? ( rails/SQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36417314/