0

私はこのような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等しいことを確認する必要があります。nameparameteridsused_parameters

私が試した方法では機能しません。他に試したことは次のとおりです。

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

等...

適切なクエリがわかりません。また、mongomapper の適切なドキュメントを見つけるのにいつも苦労しています。ウェブサイトではすべてが非常に簡潔で、例はほとんどなく、特にルビーとモンゴ全体の初心者にとっては非常に困難です.

関連するドキュメントのクエリについて誰かが詳しく説明してくれれば幸いです。

4

1 に答える 1