class User < ActiveRecord::Base
validates_length_of :first_name, :maximum => 5
end
@user = User.find(1) => <User id: 1, first_name : "Bob">
validates_length_of :first_name, :maximum => 5
end
@user = User.find(1) => <User id: 1, first_name : "Bob">
update_attribute
- バリデーションは行わない
- 一括更新ではないのでattr_protected、attr_accessibleは無効
@user.update_attribute(:first_name,'12345678')
#=> true
#<User id: 1, first_name : "12345678">
#更新に成功する。
#=> true
#<User id: 1, first_name : "12345678">
#更新に成功する。
update_attributes
- バリデーションを行う
- バリデーションでエラーが出ても、更新される(?)
@user.update_attributes(:first_name => '12345678')
#=> false
# <User id: 1, first_name : "12345678">
# @user.update_attributesはfalseを返すが、更新には成功する。なんか変な気が・・・
#=> false
# <User id: 1, first_name : "12345678">
# @user.update_attributesはfalseを返すが、更新には成功する。なんか変な気が・・・
update_attributes!
- バリデーションを行う
- 保存に失敗すると ActiveRecord::RecordInvalid を発生させる
@user.update_attributes!(:first_name => '12345678')
#=> false
#<User id: 1, first_name : "Bob">
# ActiveRecord::RecordInvalid エラーになる
#=> false
#<User id: 1, first_name : "Bob">
# ActiveRecord::RecordInvalid エラーになる
タグ:Rails
