我有一个这样的 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
s 的parameter
s 。ids
used_parameters
它不像我尝试过的那样工作,我尝试过的其他事情包括:
used_parameters.name
used_parameters[:name]
parameters.name
parameters[:name]
Parameter.find(used_parameters)[:name]
ETC...
我只是想不出正确的查询。此外,我总是无法找到适合 mongomapper 的文档。网站上的所有内容都非常简短,几乎没有示例,尤其是对于 ruby 和 mongo 的新手来说,这更加困难。
因此,如果有人可以解释更多有关查询相关文档的信息,我将不胜感激。