私はブログ エンジンに取り組んでいますが、cancan をセットアップしたくありません。私はそれを行ういくつかの方法を見つけました:
foremは、ホスト ユーザー モデルに管理者フィールドを追加することで問題を解決しますが、複数のロールを持つと多くのフィールドが必要になり、それは間違いなくその方法ではありません。
このような試験をいくつか見ましたが、それを行うには、ホスト アプリのユーザー モデルにエンジン モデルとの has_many 関係を持たせる必要があります。
class User < ActiveRecord::Base
attr_accessible :name
has_many Blogcms::RoleUser
has_many Blogcms::Role, :through => Blogcms::RoleUser
end
これが正しい方法であるかどうかはよくわかりませんが、分離されたエンジンであるためエンジンモデルが見えないため、これは機能しません
誰かがこれを試しましたか?私の英語でごめんなさい
編集
ユーザーモデルを検索する必要がなく、ロールモデルで関係を設定するだけで回避する方法を見つけました
module Blogcms
class Role < ActiveRecord::Base
has_many :role_user
has_many :user, :class_name => Blogcms.user_class, :through => :role_user
attr_accessible :name
# Return all the roles for a user
def self.roles_for_user(user)
joins(:user).where('users.id' => user.id)
end
end
end
そのように、私の roles_for_user メソッドはユーザーのすべてのロールを返します