【问题标题】:Rails override nested friendly_id in update actionRails 在更新操作中覆盖嵌套的friendly_id
【发布时间】:2013-09-09 14:11:50
【问题描述】:

我正在使用 friendly_id gem 来处理我的 Rails 4 应用程序中的 slug。为简单起见,假设我有两个资源,MissionTasks任务嵌套在任务中。两种模型都使用 FriendlyId,并且 slug 工作正常。因为一个Task属于一个Mission,所以一个Task上面有一个mission_id

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

有人对如何解决这个问题有任何想法吗?

routes.rb

resources :missions do
  resources :tasks
end

任务.rb

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

任务.rb

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

【问题讨论】:

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


    【解决方案1】:

    包括finders:

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

    来自文档:

    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 版的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多