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参数是整个p2对象哈希,而不仅仅是一个id

这可能与mongoid有关。两者都dup产生clone相同的结果。我知道ActiveRecord这些版本的不同并mongoid重新定义了这些版本

更新 1

原来只有persisted?等于的对象true才能生成路由,因为需要to_paraminJourney::Routing才能生成有效的路由。

我面临的问题是我无法持久化一个对象,因为它没有通过验证。我想我必须伪造返回的路线/projects/new才能解决这个问题

4

1 回答 1

0

无法为未持久化的对象生成路由,即使对象被复制/克隆并且具有有效的id

于 2013-04-16T17:34:03.040 回答