2012-05-10 2 views
1

J'ai inclus state_machine dans ma classe et je l'ai quittée en la manipulant dans la console. Cependant, mon excitation a disparu quand j'ai essayé de l'utiliser dans une application. Je suisImpossible d'initialiser la classe state_machined qui appartient

wrong number of arguments (2 for 0) 

erreur dans la méthode « initialiser » de ma classe state_machined « demande » quand je l'appelle user.requests.build.

méthode

"initialiser" ressemble

def initialize 
    super() 
end 

parce que le créateur de la pierre me l'a dit à https://github.com/pluginaweek/state_machine. La définition de la classe commence par

class Request < ActiveRecord::Base 
attr_accessible :subject, :details, :assigned_to, :log, :status, :solution 

belongs_to :user 
belongs_to :assignee, class_name: "User", foreign_key: "assigned_to" 

Je pense que l'erreur causée par les associations que l'initialiseur ignore. Ai-je raison? Que puis-je faire?

Répondre

1

L'exemple donné dans le fichier README ne concernait pas les intégrations ActiveRecord - uniquement pour les classes Ruby simples. Dans une intégration ActiveRecord, il n'est pas nécessaire de faire quelque chose de spécial dans votre méthode initialize pour que state_machine fonctionne. En remplaçant votre méthode initialize, vous modifiez la signature de la méthode dont dépend ActiveRecord. Si vous ne faites rien d'autre dans cette dérogation, je vous suggère de le supprimer complètement.

Espérons que cela aide!

+0

Merci beaucoup! –

Questions connexes