私はこのような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
等しいことを確認する必要があります。name
parameter
ids
used_parameters
私が試した方法では機能しません。他に試したことは次のとおりです。
used_parameters.name
used_parameters[:name]
parameters.name
parameters[:name]
Parameter.find(used_parameters)[:name]
等...
適切なクエリがわかりません。また、mongomapper の適切なドキュメントを見つけるのにいつも苦労しています。ウェブサイトではすべてが非常に簡潔で、例はほとんどなく、特にルビーとモンゴ全体の初心者にとっては非常に困難です.
関連するドキュメントのクエリについて誰かが詳しく説明してくれれば幸いです。