module ContactFilterExtension
unloadable
def in_context(context)
if proxy_owner.context == :special_area && context != :admin
scoped(:conditions => {:public => true})
else
scoped({})
end
end
end
その後、
class ContactContainer < ActiveRecord::Base
unloadable
has_many :contacts, :dependent => :destroy, :order => :position, :extend => ContactFilterExtension
end
:簡略化されています
def index
@contacts = @contact_container.contacts.in_context(context)
end
また、あなたはこのような、コンタクトモデル自体にヘルパーメソッドを移動することができますもちろん、それはまた、あなたはそれの後に他の範囲を連鎖させることができ、コンテキストから新しいレコードを構築することもできます。かなりきちんとしている。
コントローラには(ユーザーがシステム内にある)2つのコンテキストしかわかりませんが、もう1つはモデルだけで見つけることができるContactContainerのコンテキストです。
例として連絡先を使用したのは実際の使用例ではありません。D
少なくとも試しましたか?それとも最初に尋ねているのですか? :) –
私はそれがdoozieのように見えた後に尋ねた。私は他の何かがあまりにも多くの努力なしに提案したものを思い付くことができます:) –