2012-05-10 3 views
1

내 클래스에 state_machine을 포함 시켰으며 콘솔에서 조작하는 동안 종료되었습니다. 그러나 응용 프로그램에서 사용하려고하면 흥분이 사라졌습니다. 나는 user.requests.build 전화 내 state_machined 클래스 "요청"의 "초기화"방법에속한 state_machined 클래스를 초기화 할 수 없습니다.

wrong number of arguments (2 for 0) 

오류가 발생했습니다. 보석의 창조자 https://github.com/pluginaweek/state_machine에서, 그래서 나에게 말했다 때문에

def initialize 
    super() 
end 

처럼

는 "초기화"방법이 보인다. 클래스 정의는

로 시작합니다.
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" 

이니셜 라이저가 인식하지 못하는 연결로 인해 발생하는 오류라고 생각합니다. 내가 맞습니까? 내가 무엇을 할 수 있을지?

답변

1

README에 제공된 예제는 ActiveRecord 통합을위한 것이 아닙니다. 일반 Ruby 클래스 용입니다. ActiveRecord 통합에서 state_machine이 작동하려면 initialize 메소드에서 특별한 작업을 수행 할 필요가 없습니다. initialize 메서드를 재정의하면 ActiveRecord가 의존하는 메서드 시그니처가 변경됩니다. 해당 오버라이드에서 다른 작업을 수행하지 않는다면 모두 제거하는 것이 좋습니다.

희망이 도움이됩니다.

+0

대단히 감사합니다! –

관련 문제