2011-09-15 4 views
3

「アドレス」モデルとの関連性が高い「ユーザー」というモデルがあります。私はUser.new.addresses.buildを行うとRails Active Record - 関連するモデルにinitializeメソッドがある場合にbuildを使用する方法?

、私は私が住所モデルでinitializeメソッドを追加するとき、この問題が発生し、

ArgumentError: wrong number of arguments (1 for 0) 
    from /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/reflection.rb:162:in `initialize' 
    from /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/reflection.rb:162:in `new' 
    from /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/reflection.rb:162:in `build_association' 
    from /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations/association_collection.rb:423:in `build_record' 
    from /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations/association_collection.rb:102:in `build' 
    from (irb):10 

を、次のエラーを取得しています。

すべてのヘルプは高く評価されています...

編集:

はinitializeメソッドには引数はありません、それはinitializeメソッドをオーバーライドすることお勧めしません。この

class Address < ActiveRecord::Base 
    attr_accessor :test 

    def initialize 
    test = "manu" 
    end 
end 

答えて

1

のように見えますActiveRecord継承クラスの。 カスタム初期化を追加する場合は、after_initializeコールバックを使用します。 ActiveRecord callbacksはすべてレールapiを参照してください。

2

after_initializeフックがあなたの目的に役立つはずである

class Address < ActiveRecord::Base 
    attr_accessor :test 
    after_initialize :init 

    def init 
    @test = "manu" 
    end 
end 
関連する問題