associationをoverrideする方法
条件が必要なときのみ通常使用している関連名はそのままにwhere句を使用したいと思い、関連の上書きを行う事で可能なのではと思い試してみています。
class Hoge < ActiveRecord::Base
belongs_to :common
belongs_to :common_flag, -> { where(flag: 1) }, class_name: 'Common'
def self.where_flag
common = common_flag
super
end
end
railsのドキュメントを参考に、上記のような記述をしましたが、上手くいきませんでした。
Hoge.where_flag
と呼んだところ、common_flagが"undefined local variable or method"だと言われ、
self.common_flag
としてみたところ、common_flagが"undefined method"だと言われてしまいました。
正しくはどのように記述すればいいのでしょうか。