/ /多対多関連オブジェクトの特定のフィールドに対するMongomapperクエリ - ruby​​、mongodb、associations、mongomapper

多対多関連オブジェクトの特定のフィールドに対するMongomapperクエリ - ruby​​、mongodb、associations、mongomapper

私はこのようなmongomapperモデルを持っています:

class ChildTemplate

include MongoMapper::Document
plugin MongoMapper::Plugins::IdentityMap

key :name,            String, :required => true, :unique => true
key :description,     String
key :config,          Array

key :used_parameters, Array
many :parameters, :in => :used_parameters

validate :parameters_in_config

def parameters_in_config
found_parameters = Set.new

config.each do |line|
params = line.scan("<([-+*]{2})(.+)1>")
unless params.empty?
found_parameters |= params.transpose[1]
end
end

unless found_parameters == Parameter.find(used_parameters).fields(:name).to_set
errors.add(:parameters, "Incorrect")
end
end

end

class Parameter

include MongoMapper::Document
plugin MongoMapper::Plugins::IdentityMap

key :name,          String
key :description,   String
#more keys

end

問題はこの行です:

unless found_parameters == Parameter.find(used_parameters).fields(:name).to_set

ここで、私は Set と呼ばれる found_parameters 使用されるパラメータの名前が含まれています。検証のために、私はこのセットが nameparameter彼の idsused_parameters アレイ。

それは私が試したやり方ではうまくいかず、私が試した他のことも含まれています:

used_parameters.name
used_parameters[:name]
parameters.name
parameters[:name]
Parameter.find(used_parameters)[:name]

等...

私はちょうど適切なクエリを把握できません。 また、私はいつもmongomapperのための適切な文書を見つけるのに苦労しています。ウェブサイト上ではすべてのことがほんの一例であり、特にルビーとモンゴの騒ぎについてはそれほど難しいことはありません。

だから、もし誰かが関連する文書を照会することについてもっと説明できたら、それを感謝します。

回答:

回答№1は0

私は現在、それぞれのループを使って名前を取得し、それらを別々のコレクションに格納しています:

parameters.each do |par|
used_param_names << par.name
end

これはうまくいくはずですが、私はMongoMapperがおそらく単一のステートメントで名前の集合を得る可能性を提供するという点でよりエレガントな方法を望みます。