1

定義済みのメソッドが true の場合、ユーザー テーブルからエンティティを取得しようとしています。

User モデルにこのメソッドがあります

def self.expert?
  return self.has_role? :domain_expert
end

そして、私はこのクエリを実行しようとしています

users = User.where(:expert? => true)

エラー

 no such column: users.expert?

このクエリを実行するにはどうすればよいですか?

編集:

ローリファイジェムを使っています

お手本に

has_and_belongs_to_many :users, :join_table => :users_roles
4

3 に答える 3

2

3.2以降のRolifygemバージョンを使用している場合は、

User.with_role(:domain_expert)

ここで説明されているようにcancanロールを設定した場合:ロールベースの承認

次に、次のようにクエリする必要があります

User.where(:role => :domain_expert)

このスコープを定義して、User.domain_expertsのように呼び出すこともできます

バージョン3.2より前のRolifygemを使用している場合、またはここで説明するように個別のモデルを作成した場合:個別のロールモデル

次に、次のようにクエリする必要があります

Role.where(:name => :domain_expert).users
于 2013-03-11T13:50:17.237 に答える
0

rolify gemのreadmeを見るとwith_roleスコープがある

User.with_role(:domain_expert)
于 2013-03-11T14:04:31.240 に答える
0

最後に私はそれを取得します:)。

2 つのテーブル (ユーザーとロール) を結合する必要があります

User.joins(:roles).where("name = ?", "domain_expert")

これで私の問題は解決しました:)。

于 2013-03-11T14:08:46.853 に答える