読者です 読者をやめる 読者になる 読者になる

has_manyで所有側がpushするとエラー#2

rails

どうやら被所有側インスタンスの@attributesがnilのようだ。これが原因?

(rdb:139) p attr_name
"memo_id"
(rdb:139) p column
#<ActiveRecord::ConnectionAdapters::MysqlColumn:0x91134d8 @null=true, @name="memo_id", @primary=false, @original_default=nil, @scale=nil, @sql_type="int(11)", @precision=nil, @type=:integer, @limit=11, @default=nil>
(rdb:139) p @attributes
nil
(rdb:139) p self
#<Uploaded:0x90ce148 @path="public/images/20070522054247_Sunset.jpg", @name="hoge">

2007/05/25 追記
被所有側のmodelに自前のinitializeを持たせていたが、その中でsuper()を呼んでいなかった。そのため、ActiveRecordのinitializeが呼び出されないので@attributesが設定されない。
こんな感じにしたらうまく動いた。

class Uploaded < ActiveRecord::Base
  belongs_to :memo

  def initialize(file, name)
    super()     ←これ重要
    filepath = 'public/images/' + Time.now.strftime('%Y%m%d%H%M%S_') + file.original_filename
    File.open(filepath, 'w') { |f|
      f.write file.read
    }
    @name = name
    @path = filepath
  end
end