克隆/欺骗对象的路由生成异常

时间:2013-04-16 16:50:16

标签: ruby-on-rails ruby mongoid

我有一个跟随对象

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有关。 dupclone都会产生相同的结果。我知道ActiveRecord版本的版本有所不同,mongoid也重新定义了这些版本

更新1

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

我面临的问题是,由于验证失败,我无法持久保存对象。我想我必须假冒路线回到/projects/new才能解决这个问题

1 个答案:

答案 0 :(得分:0)

即使对象被欺骗/克隆并且具有有效的id

,也无法为未持久化的对象生成路由