0

MongoMapper 配列内に配列要素が存在するかどうかを確認する方法を知りたいです。この質問は私が見つけることができる最も近いものですが、既に持っているドキュメントを単に使用するのではなく、クエリに対処しています.

私のユーザーモデルには行が含まれています

key :roles, Array

'roles' 配列には、'admin' や 'user' などの文字列が含まれています。承認のために、User のインスタンスで次のようなメソッドを呼び出す必要があります。

if user.roles.contains?('admin')
    # Do administrative stuff.
end

しかし、'contains?' を呼び出そうとすると、Ruby は、そのようなメソッドがないと文句を言っています。

NoMethodError (undefined method `contains?' for #<Array:0x007fc845cd8948>):
    app/models/ability.rb:11:in `initialize'
    app/controllers/settings_controller.rb:5:in `index'

これを行う方法がない場合、配列を Ruby 配列に変換して「含む」を呼び出すにはどうすればよいですか? to_a を呼び出しても実行されません:

if user.roles.to_a.contains?('admin')  # etc...

Mountain Lion で Rails 3.2.13、Ruby-1.9.3-p392、および MongoMapper 0.12.0 を使用しています。

4

1 に答える 1