2013-09-05 3 views
0

J'utilise le friendly_id gem pour gérer les limaces dans mon application Rails 4. Par souci de simplicité, disons que j'ai deux ressources, Missions et Tâches. Les tâches sont imbriquées à l'intérieur Missions. Les deux modèles utilisent FriendlyId, et les limaces fonctionnent bien. Parce qu'une Tâche appartient à un Mission, un La tâche a un mission_id dessus.Rails surcharger friendly_id imbriqué dans l'action de mise à jour

Je rencontre un problème lorsque je mets à jour un Tâche. Parce que le mission_id vient à travers les paramètres comme une limace (une chaîne friendly_id et non un identifiant entier), le mission_id sur la Task est mis à jour comme , car il est attend un entier et est passé un string.

Quelqu'un a des idées sur la façon de résoudre ce problème?

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 

Répondre

1

Inclure finders:

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

De 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 

C'est pour la version 5.

Questions connexes