Module: MailyHerald::Autonaming
Overview
Provides some common patters for models that have both :name and :title attributes. It adds some format constraints to :name and title attributes and makes sure that they are always both set properly.
If only :name is provided, it will be used also as a:title. If only :title is provided, :name will be automatically generated out of it.
Defined Under Namespace
Modules: ClassMethods, InstanceMethods
Class Method Summary collapse
Class Method Details
.included(base) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/maily_herald/autonaming.rb', line 11 def self.included(base) base.extend ClassMethods base.send :include, MailyHerald::Autonaming::InstanceMethods base.class_eval do validates :name, presence: true, format: {with: /\A\w+\z/}, uniqueness: true validates :title, presence: true before_validation do if self.title && !self.name self.name = self.title.parameterize.underscore elsif self.name && !self.title self.title = self.name end end end end |