私は、ユーザーがプロジェクトへのメンバーシップを持っているRailsアプリケーションを持っています(そして多態的に他のものもあります)。ユーザーにはロールもあります。私はUser#プロジェクトを通常のActiveRecord findのように動作させたいが、管理者がすべてのプロジェクトにアクセスできるようにしたい。 '(例えば、私はもっと定期的にnamed_scope使用することができるようにユーザーアセットを制御するにはどうすればよいですか?
class User < ActiveRecord::Base
has_many :memberships, :dependent => :destroy
has_many :projects, :through => :memberships, :source => :member, :source_type => "Project"
end
:
class User < ActiveRecord::Base
has_many :memberships, :dependent => :destroy
def projects
if has_role?(:admin)
Project.find(:all)
else
Project.find(:all, :include => :memberships, :conditions => ["memberships.user_id = ?", id])
end
end
end
class Project < ActiveRecord::Base
has_many :memberships, :as => :member, :dependent => :destroy
end
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :member, :polymorphic => :true
end
しかし、私は本当に、むしろこのような何かをしたい:しばらく
は、私はこれを行ってきましたalfred.projects.recent.active ')。管理者用の新しいメンバーシップを自動的に追加すると機能しますが、すぐに機能しなくなります。
私はUser#projectsインターフェイスを保持します。ここで正しいトラックは何ですか?
多くのありがとうございます。
感謝を!これを攻撃する別の方法があるかもしれません - ActiveRecordオブジェクトの配列をAR関連のように動作させる簡単な方法はありますか?すなわち、projects = Project.find(:all); projects.active.recent - もう一度、ありがとう! – scottburton11