module Vimo::Expandable
Public Class Methods
vimo_expand(options = {})
click to toggle source
# File lib/vimo/expandable.rb, line 9 def self.vimo_expand(options = {}) @belongs_to_owner = options[:owner] data_method = options[:data_method] || "data" self.class_eval do has_one :expanded, as: :expandable, class_name: "Vimo::Item", autosave: true delegate data_method, "#{data_method}=", to: :expanded def vimo_owner send(@belongs_to_owner) if @belongs_to_owner end def entities if vimo_owner vimo_owner.vimo_entities else Vimo::Entity end end def expanded super || build_expanded(entity: entities.find_or_create_by!(name: "_expand_#{self.class.table_name}", expand_model: self.model_name.name)) end def entity_fields @entity_fields ||= expanded.entity.fields end end end
Public Instance Methods
entities()
click to toggle source
# File lib/vimo/expandable.rb, line 21 def entities if vimo_owner vimo_owner.vimo_entities else Vimo::Entity end end
entity_fields()
click to toggle source
# File lib/vimo/expandable.rb, line 33 def entity_fields @entity_fields ||= expanded.entity.fields end
expanded()
click to toggle source
Calls superclass method
# File lib/vimo/expandable.rb, line 29 def expanded super || build_expanded(entity: entities.find_or_create_by!(name: "_expand_#{self.class.table_name}", expand_model: self.model_name.name)) end
vimo_owner()
click to toggle source
# File lib/vimo/expandable.rb, line 17 def vimo_owner send(@belongs_to_owner) if @belongs_to_owner end