Files
writebook/app/models/leafable.rb

23 lines
428 B
Ruby

module Leafable
extend ActiveSupport::Concern
TYPES = %w[ Page Section Picture ]
included do
has_one :leaf, as: :leafable, inverse_of: :leafable, touch: true
has_one :book, through: :leaf
delegate :title, to: :leaf
end
class_methods do
def leafable_name
@leafable_name ||= ActiveModel::Name.new(self).singular.inquiry
end
end
def leafable_name
self.class.leafable_name
end
end