2009-04-09 29 views
1

有没有人使用AASM状态机Gem with Rails 2.3.2有问题?这是工作为我好,但现在给人一种NoMethodError由Rails 2.3.2破坏的AASM Gem?

NoMethodError (undefined method `state' for #<Comment:0x25cb8ac>): 
    /usr/local/lib/ruby/gems/1.8/gems/rubyist-aasm-2.0.5/lib/persistence/active_record_persistence.rb:231:in `send' 
    /usr/local/lib/ruby/gems/1.8/gems/rubyist-aasm-2.0.5/lib/persistence/active_record_persistence.rb:231:in `aasm_read_state' 
    /usr/local/lib/ruby/gems/1.8/gems/rubyist-aasm-2.0.5/lib/persistence/active_record_persistence.rb:135:in `aasm_current_state' 
    /usr/local/lib/ruby/gems/1.8/gems/rubyist-aasm-2.0.5/lib/persistence/active_record_persistence.rb:156:in `aasm_ensure_initial_state' 
app/controllers/comments_controller.rb:12:in `create' 

下面是从我的模型相关的代码,使用AASM:

class Comment < ActiveRecord::Base 
    include AASM 
    belongs_to :post   
    after_create :spam_check 

    aasm_column :state 
    aasm_initial_state :submitted 
    aasm_state :submitted 
    aasm_state :approved 
    aasm_state :rejected 

    aasm_event :ham do 
    transitions :to => :approved, :from => [:submitted, :rejected] 
    end 

    aasm_event :spam do 
    transitions :to => :rejected, :from => [:submitted, :approved] 
    end  

    private   
    def spam_check 
    # Invoke Askismet to see if the comment is spam... 
    end 
end 

请注意,我在我的commentsstate列。

  • 任何想法为什么它不再有效?

回答

2

呃,你需要一个名为'状态'的评论表中的字段。你使用aasm_column :state来定义它。这不是Rails 2.3.2的错误! :D

+0

我在评论表中有这一栏。 – 2009-04-10 09:52:46

1

从它出现的是,在编写的时候,有一个即将更新aasm home page ...

有一个在Ruby on Rails group一点讨论 - 我不知道是否有任何的帮助。

执行

gem list .*aasm --remote 

扔了一堆引用:

aasmith-yodlee (0.0.1.20090301132701) 
bloom-aasm (2.0.3) 
bloom-bloom-aasm (2.0.3) 
caleb-aasm (2.0.2) 
dunedain289-aasm (2.1.3) 
dvdplm-aasm (2.0.6) 
eric-aasm (2.0.4) 
factorylabs-aasm (2.0.5.2) 
gvaughn-aasm (2.0.4) 
lostboy-aasm (2.0.5.1) 
mikowitz-aasm (2.0.6) 
netguru-aasm (2.0.6) 
notch8-aasm (2.0.5) 
rubyist-aasm (2.0.5) 
runcoderun-aasm (2.0.5.1) 
snoozer05-aasm (2.0.2) 
spicycode-aasm (2.0.0) 

它怀疑某些或全部 “dvdplm-”, “factorylabs-” 和 “runco​​derun-” 的人可能是git叉子。您可能会发现一个或多个修复了您的问题。

+0

谢谢迈克。我尝试用factorylabs-aasm替换rubyist-aasm,但它仍然不起作用。我将尝试用一个简单的状态机模型创建一个全新的Rails项目,并查看它是否适用于此。 – 2009-04-10 10:20:40