J'ai un peu de mal avec la gemme de «workflow», à savoir, les transitions ne fonctionnent pas. Ce que j'essaie de faire est très basique, j'ai un état 'lu/non lu' pour les messages entre utilisateurs, la transition est déclenchée quand l'utilisateur va à une page 'show' pour ce message spécifique. Cependant, je ne peux pas sembler obtenir la transition vers le travail, même dans la console:rails workflow gem méthode manquant erreur machine d'état
\\ message.rb
class Message < ActiveRecord::Base
include Workflow
workflow do
state :unread do
event :view, :transitions_to => :read
end
state :read
end
end
dans la console, lorsque je tente de faire cette transition, j'utilise le code suivant et obtenir le résultat suivant:
>> message = Message.new
=> #<Message id: nil, user_id: nil, message: nil, created_at: nil, u
pdated_at: nil>
>> message.current_state
=> #<Workflow::State:0x7ed4febc @name=:unread, @events={:view=>#<Workflow:
:Event:0x7ed4fd90 @action=nil, @name=:view, @transitions_to=:read, @meta={}
>}, @meta={}>
>> message.unread?
=> true
>> message.view!
NoMethodError: undefined method `workflow_state=' for #<Message:0x7ecfd5a4>
from /home/Ryan/.bundle/ruby/1.8/gems/activerecord-2.3.8/lib/active_reco
rd/attribute_methods.rb:259:in `method_missing'
from /home/Ryan/.bundle/ruby/1.8/gems/activerecord-2.3.8/lib/active_reco
rd/base.rb:2656:in `send'
from /home/Ryan/.bundle/ruby/1.8/gems/activerecord-2.3.8/lib/active_reco
rd/base.rb:2656:in `update_attribute'
from /home/Ryan/.bundle/ruby/1.8/gems/workflow-0.7.0/lib/workflow.rb:272
:in `persist_workflow_state'
from /home/Ryan/.bundle/ruby/1.8/gems/workflow-0.7.0/lib/workflow.rb:211
:in `transition'
from /home/Ryan/.bundle/ruby/1.8/gems/workflow-0.7.0/lib/workflow.rb:165
:in `process_event!'
from /home/Ryan/.bundle/ruby/1.8/gems/workflow-0.7.0/lib/workflow.rb:124
:in `view!'
from (irb):25
Je ne trouve rien sur ce qui se passe ici, de googleing et même essayé de regarder dans: /home/Ryan/.bundle/ruby/1.8/gems/workflow-0.7.0/lib/workflow .rb mais je ne vois pas pourquoi cela ne fonctionne pas. C'est un problème très simple et j'ai brouillé mon cerveau pour comprendre ce qui ne va pas.
Merci pour votre aide
grâce à cela. J'ai fini par utiliser acts_as_state_machine car évidemment mon besoin était très simple. Mais oui, c'était mon problème. – goddamnyouryan