我有以下对象
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
这可能与mongoid有关。两者都dup
产生clone
相同的结果。我知道ActiveRecord
这些版本的不同并mongoid
重新定义了这些版本
更新 1
原来只有persisted?
等于的对象true
才能生成路由,因为需要to_param
inJourney::Routing
才能生成有效的路由。
我面临的问题是我无法持久化一个对象,因为它没有通过验证。我想我必须伪造返回的路线/projects/new
才能解决这个问题