次のオブジェクトがあります
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
これはモンゴイドに関連している可能性があります。と の両方dupでclone同じ結果が得られます。私ActiveRecordはそれらのバージョンが異なり、mongoidそれらも再定義していることを知っています
更新 1
有効なルートを生成するにはinが必要なため、 persisted?equal toを持つオブジェクトのみtrueがルートを生成できることがわかります。to_paramJourney::Routing
私が直面している問題は、検証に失敗したため、オブジェクトを永続化できないことです。/projects/newこれを修正するには、ルートを偽造する必要があると思います