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

紳士なブログ

紳士すぎてすみません

test実行時のエラー

ArgumentError : wrong number of arguments (1 for 2)

引数の数がおかしいとのこと
参考(そんなに参考にならないけど):
http://nyon2.net/archives/2008/01/ruby-on-rails-1.html


ActiveRecord::StaleObjectError

Rails2.3.2に以降になって出るようになったみたい
lock versionを使ったロック機能によるもの
エラーを出しているのはいずれもこのロックに加えて、関連先のモデルに対して counter_cache と":dependent => :destroy"による連鎖削除を指定しているモデルのようです。
http://api.rubyonrails.org/classes/ActiveRecord/Locking/Optimistic.html
Rails レシピブック』p.193「ロックを利用する」


[ActiveRecord]ロックについて

ロックについて理解するには、『Rails レシピブック』のp.193を読むのが早い
特に真ん中のコードのあたりがわかりやすいので、余裕があればブログにまとめておくのもあり
http://d.hatena.ne.jp/nabeta/20090316/1237217950

student_1 = Student.find(1)
student_1.name = "名前(1)"
puts student_1.description
# => "古い内容"

# 同じレコードを別のモデルオブジェクトとしてロードする
student_2 = Student.find(1)
student_2.description = "新しく更新した内容"
student_2.save

# 本文descriptionが更新されている
puts Student.find(1).description
# => "新しく更新した内容"

# しかし、古いレコードに基づいたstudent_1を保存すると
# 変更が上書きされてしまう
student_1.save
puts Student.find(1).description
# => "古い内容"
広告を非表示にする