ActiveRecordを継承したモデルで#saveでも#save!でもデータが保存できなくなる自体に陥った。
で、1時間ぐらい格闘した結果、原因判明。
ActiveRecord継承したモデルを作った際に、モデルの内部でcreateとかupdateのメソッドを実装すると、
既存のcreateやupdateのメソッドがオーバーライドされてDBにデータが保存できなくなるらしい。
1 # coding: utf-8 2 3 class Book < ActiveRecord::Base 4 attr_accessible :price, :title 5 6 def create 7 # 宣言をするとデータが保存できなくなる 8 end 9 10 def update 11 # 宣言をするとデータが保存できなくなる 12 end 13 end
みんな気をつけろよ!
ちなみにsuper()でオーバライドするメソッドが呼び出せるので、次のようにすれば解決できる気がしなくもない(未検証)
1 # coding: utf-8 2 3 class Book < ActiveRecord::Base 4 attr_accessible :price, :title 5 6 def create 7 # super()を呼ぶとオーバーライドしたメソッドが呼び出される 8 super() 9 end 10 11 def update 12 # super()を呼ぶとオーバーライドしたメソッドが呼び出される 13 super() 14 end 15 end
まぁ、おとなしくメソッド名を変えるのが吉かな。。。