Rails在更新操作中覆盖嵌套的friendly_id

时间:2013-09-05 16:26:41

标签: ruby-on-rails activerecord friendly-id

我正在使用friendly_id gem来处理我的Rails 4应用中的slu ..为简单起见,假设我有两个资源,任务任务任务嵌套在任务中。两个型号都使用FriendlyId,并且slugs工作正常。由于任务属于任务任务上有 mission_id

我在更新任务时遇到了问题。因为 mission_id 作为一个slug(一个friendly_id字符串而不是一个整数id)来参数,所以任务上的 mission_id 正在更新为 0 ,因为它期望一个整数并且正在传递一个字符串。

任何人对如何解决此问题都有任何想法?

的routes.rb

resources :missions do
  resources :tasks
end

Mission.rb

class Mission < ActiveRecord::Base
  extend FriendlyId
  friendly_id :name, use: :slugged
  has_many :tasks
end

Task.rb

class Task < ActiveRecord::Base
  extend FriendlyId
  friendly_id :name, use: :slugged
  belongs_to :mission
end

1 个答案:

答案 0 :(得分:1)

加入finders

friendly_id :name, use: [:slugged, :finders]

来自doc:

Finders are no longer overridden by default. If you want to do friendly finds,
you must do Model.friendly.find rather than Model.find. You can however 
restore FriendlyId 4-style finders by using the :finders addon

这是针对第5版。