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

READMEに示されている例は、ActiveRecord統合用ではなく、プレーンなRubyクラス用です。ActiveRecord統合では、state_machineが機能するために、initializeメソッドで特別なことをする必要はありません。初期化メソッドをオーバーライドすることで、ActiveRecordが依存するメソッドシグネチャを変更します。そのオーバーライドで他に何もしていない場合は、完全に削除することをお勧めします。

お役に立てれば!

于 2012-05-11T11:49:47.033 に答える