0

次のオブジェクトがあります

class BaseProject
  include Mongoid::Document
end

ここで、次の方法でコピーを作成したいとしましょうdup/clone

p1 = Project.first
p2 = p1.clone #p1.dup has the same effect
project_path(p1) #works fine generating /projects/87358736587365 path
project_path(p2) #does not work resulting in an error

No route matches {:action=>"my_action", :controller=>"projects", :id=>#Project{}....

パラメーターは、単なるオブジェクト ハッシュではなく、オブジェクト ハッシュ:id全体であることに注意してください。p2id

これはモンゴイドに関連している可能性があります。と の両方dupclone同じ結果が得られます。私ActiveRecordはそれらのバージョンが異なり、mongoidそれらも再定義していることを知っています

更新 1

有効なルートを生成するにはinが必要なため、 persisted?equal toを持つオブジェクトのみtrueがルートを生成できることがわかります。to_paramJourney::Routing

私が直面している問題は、検証に失敗したため、オブジェクトを永続化できないことです。/projects/newこれを修正するには、ルートを偽造する必要があると思います

4

1 に答える 1

0

オブジェクトが複製/複製され、有効なid

于 2013-04-16T17:34:03.040 に答える