over 1 year ago

validation是在Model中验证内容是否合法的方法,以保证内容符合我们的要求。
validation在SQL指令执行之前,所以如果ActiveRecord认为这笔资料验证未通过,就不会将ruby转成SQL写入,而是报错。

写法:
class Topic < ActiveRecord::Base

presence: true代表这个资料必须有值,不为空

validates :title, presence: true

content最多只能200字

validates :content, length: { maxmum: 200 }
end

create,save,update方法可以引发验证

validate fail时候create会把object丢回来,update和save则回传false,
秘诀:在method后面加感叹号可以知道错误原因
for example:

topic.save

=> false

topic.save!

=> ActiveRecord::RecordInvalid: Validation failed: Title can't be blank

← 深入学习has_many:through ruby on rails 语法scope是什么意思? →