2009-04-09 1 views
1

У кого-нибудь возникли проблемы с использованием автомата G12 с рельсами 2.3.2? Он работал хорошо для меня, но теперь давая NoMethodError:AASM Gem, поврежденный Rails 2.3.2?

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 

Обратите внимание, что я имею state столбец в моей comments таблице.

  • Любые идеи, почему это больше не работает?

ответ

2

Нужно поле в вашей таблице комментариев, называемое «состояние». Вы определили его с помощью aasm_column :state. Это не ошибка Rails 2.3.2! : D

+0

У меня есть эта колонка в моей таблице комментариев. –

+0

Получается, что у меня не было этой колонки! Он был определен в моей миграции и schema.rb, но я также запускаю SQL-файл, чтобы предварительно заполнить базу данных, и она немного не синхронизировалась и удаляла столбец «состояние». –

1

Из aasm home page кажется, что, как и в момент написания, есть обновление идет ...

Там немного обсуждение Ruby on Rails group - я не знаю, если какой-либо из этого помогает.

Executing

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-" и "runcoderun-" из них может быть git forks. Вы можете обнаружить, что одна или несколько проблем устраняют вашу проблему.

+0

Спасибо, Майк. Я попытался заменить рубист-араз на фабрику-лазурь, но он все еще не работает. Я попытаюсь создать совершенно новый проект Rails с простой моделью автомата и посмотреть, работает ли это для этого. –