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