2016-04-05 3 views
0

私はこれらの3つのクラスがあります:私はerror_timeとアセンブリの仕事を持つ任意のマシンを持っているすべての工場を返すためにfactory.rbにスコープを書くことにしたい関連付けのないテーブルに参加できますか? (レール/ 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 

スキーマ

Factories 
- id 

Machines 
- factory_id 

AssemblyJobs 
- machine_id 
- start_time 
- error_time 
- finish_time 

を。これは可能ですか、factory_id列をアセンブリジョブに追加してbelongs_to関連付けを作成する必要がありますか?

答えて

1

カスタムを入力することにより、関連せずにテーブルを結合することができますjoins方法でクエリに参加:

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

しかし、あなたの場合、アセンブリを持つ機械でファクトリをスコープすることができます次のクエリを使用してジョブが

Factory.joins(machines: :assembly_jobs) 

これは、1つのまたは複数の組立作業を有する1つまたは複数のマシンでのみの工場が返される場所にネストINNER JOINを作成します。

関連する問題