23 lines
428 B
Ruby
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
|