2018-07-25-回调中遇到的一些方法

toggle切换true/false

user.toggle(:terms_of_service)
PS: 1、如果原terms_of_service为true,则变成false
2、有无!表示是否跳过回调

touch更新对象时间戳

user.touch
PS:有无!表示是否跳过回调

decrement 相关

decrement

user = User.first
user.decrement(:age)
user.save

decrement!

user = User.first
user.decrement!(:age,2)

1、decrement 和 decreament! 都可以接两个参数,第二个参数是减少数(可省)
2、decrement 需要save对象才会生效,decrement!直接生效

decrement_counter
User.decrement_counter(:age,1,touch: true)

1、参数含义decrement_counter(字段,id,是否更新时间戳可省)
2、它是一个类方法
3、它没有decrement_counter!这种写法
4、它每次减少只能是1

update相关

update 与 update_attributes

1、后接hash,会更新对象中所有的字段
2、update_attributes不会跳过回调

update_column VS update_attribute

1、它们是唯一两个不能接hash的方法(field,value)
2、update_attribute 不会跳过回调

update_columns

更新单个字段,接hash

update_all

1、类方法
2、更新所有对象

你可能感兴趣的:(2018-07-25-回调中遇到的一些方法)