私はレールにかなり慣れていないので、実際にauthlogic + acl9を使用するのは初めてです. 両方のプラグインのデフォルトのインストール手順に従いました。
これまでのところ、すべてがうまく機能していますが、この問題のエレガントな解決策を見つけるのに苦労しています:
Products というモデル クラスがあるとします。新しい Product オブジェクトを作成するとき、current_user を所有者として割り当てます。
current_user.has_role! :owner, @product
2 番目のユーザーを登録し、この部分が機能することを確認しました。
products コントローラには index メソッドがあり、単純にすべての製品を返します。
def index
@products = Products.all
end
私の質問は次のとおりです: current_user が :owner である製品だけを取得するために、Products で find メソッドを呼び出すにはどうすればよいですか? だから私は意味する acl9 インターフェースを使用しています:
@product.accepts_role?(:owner, current_user)
1 つの可能性としては、最初にすべての製品を取得してから、current_user の製品だけで新しい配列を作成することです。だから多分このように:
@products = []
products = Products.all
products.each do |p|
@products << p if p.accepts_role?(:owner, current_user)
end
この解決策はかなり無駄に思えます。それで、それを行う正しい方法は何ですか?
みんな、ありがとう!