我在我的课程中包含了state_machine,并在控制台中使用它时退出了。但是,当我尝试在应用程序中使用它时,我的兴奋消失了。我得到了
wrong number of arguments (2 for 0)
当我调用user.requests.build时,在我的state_machined类“request”的“initialize”方法中出现错误。
“initialize”方法看起来像
def initialize
super()
end
因为宝石的创造者在https://github.com/pluginaweek/state_machine告诉了我。类定义以
开头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"
我认为由初始化程序不知道的关联引起的错误。我对吗?我该怎么办?
答案 0 :(得分:1)
README中给出的示例不适用于ActiveRecord集成 - 仅适用于纯Ruby类。在ActiveRecord集成中,无需在初始化方法中执行任何特殊操作以使state_machine工作。通过覆盖初始化方法,您将更改ActiveRecord所依赖的方法签名。如果你没有在覆盖中做任何其他事情,我建议你完全删除它。
希望这有帮助!