has_manyで所有側がpushするとエラー#2
どうやら被所有側インスタンスの@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