Sha256: 56a5d22d34752dbca025ae0ceb48d7e468b5f92b33c2c254f9fa093a431ac7b3
Contents?: true
Size: 1.05 KB
Versions: 1
Compression:
Stored size: 1.05 KB
Contents
# frozen_string_literal: true module Vimo module Expandable extend ActiveSupport::Concern included do 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 end end end ActiveRecord::Base.send :include, Vimo::Expandable
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
vimo-0.1.3 | lib/vimo/expandable.rb |