1

我在课堂上包含了 state_machine 并在控制台中使用它进行操作时退出了。但是,当我尝试在应用程序中使用它时,我的兴奋消失了。我有

wrong number of arguments (2 for 0)

当我调用 user.requests.build 时,我的 state_machined 类“request”的“initialize”方法出错。

“初始化”方法看起来像

def initialize
  super()
end

因为 gem 的创建者在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"

我认为初始化程序不知道的关联引起的错误。我对吗?我能做些什么?

4

1 回答 1

1

自述文件中给出的示例不适用于 ActiveRecord 集成——仅适用于普通的 Ruby 类。在 ActiveRecord 集成中,不需要在你的初始化方法中做任何特殊的事情来让 state_machine 工作。通过覆盖您的初始化方法,您正在更改 ActiveRecord 所依赖的方法签名。如果您在该覆盖中没有做任何其他事情,我建议您完全删除它。

希望这可以帮助!

于 2012-05-11T11:49:47.033 回答