2016-11-10 9 views
0

"activos"というモデルがありますが、 "relactivo"という別のモデルに関連付けられていないレコードのみを表示する必要があります。アソシエーションなしの範囲

私はモデルでこれをしようとしてきた:スコープ:TS、 - > {含み(:relactivo).where(relactivo:{ACTIVO:ゼロ})}

これは私のモデル "activos"

です
class Activo < ActiveRecord::Base 
    self.primary_key = "IdActivos" 

    scope :ts, -> { includes(:relactivo).where(relactivo: { activo: nil}) } 


    has_one :relactivo, class_name: "Relactivo", foreign_key: "Activo" 


end 

と私のモデル "relactivo"

class Relactivo < ActiveRecord::Base 
    self.primary_key = "IdRow" 
    belongs_to :activo, class_name:"Activo", foreign_key: "Activo" 

end 
+0

こんにちは - あなたはあなたが持っているコードで見ているエラーは何ですか?代わりにあなたは何を期待していますか? –

答えて

2

あなたの範囲のためにこれをやってみてください。

class Activo < ActiveRecord::Base 
    self.primary_key = "IdActivos" 

    scope :ts, -> { joins('LEFT OUTER JOIN relactivos ON relactivos.IdActivos = activos.IdActivos WHERE relactivos.IdActivos IS null'))) } 

    has_one :relactivo, class_name: "Relactivo", foreign_key: "IdActivos" 

    end 

これが動作するかどうかを確認してください。カスタムプライマリ/外部キーは少し奇妙ですが、これを試してみてください。

+0

Rails5で 'left_outer_joins'が新しくなりましたか? –

+0

@muistooshort、あなたは絶対に正しいです。私は私の答えを更新します。それを指摘してくれてありがとう。 –

+0

@DanRubioありがとうございますが、私にすべてのレコードを表示しています – LuisC

関連する問題