Add validations to these models such that...
- All authors have a name
- No two authors have the same name
- Author phone numbers are exactly ten digits
- All posts have a title
- Post content is at least 250 characters long
- Post summary is a maximum of 250 characters
- Post category is either
Fiction
orNon-Fiction
This step requires aninclusion
validator, which was not outlined in the lesson. You'll need to refer to the Rails guide to look up how to use it.
Finally, add a custom validator to Post
that ensures the title is
sufficiently clickbait-y. If the title does not contain "Won't Believe",
"Secret", "Top [number]", or "Guess", the validator should add a validation.
Use the Custom methods style of validator found in the Rails documentation.
class Author < ActiveRecord::Base
validates :name, presence: true, uniqueness: true
validates :phone_number, length: { is: 10 }
end
class Post < ActiveRecord::Base
validates :title, presence: true
validates :content, length: { minimum: 250 }
validates :summary, length: { maximum: 250 }
CATEGORY_OPTIONS = %w[Fiction Non-Fiction]
validates :category, inclusion: { in: CATEGORY_OPTIONS }
validate :title_clickbait
def title_clickbait
if title && !title.include?("Won't Believe" || "Secret" ||
"Top [number]" || "Guess")
errors.add(:title, "Not clickbait")
end
end
end