module CustomAttributes::ActsAsCustomizable::ClassMethods
Public Instance Methods
acts_as_customizable(options = {})
click to toggle source
# File lib/custom_attributes/acts_as/acts_as_customizable.rb, line 9 def acts_as_customizable(options = {}) cattr_accessor :customizable_options self.customizable_options = options has_many :custom_values, -> { includes(:custom_field).order("#{CustomField.table_name}.position") }, as: :customizable, inverse_of: :customizable, dependent: :delete_all, validate: false include CustomAttributes::ActsAsCustomizable::InstanceMethods validate :validate_custom_field_values after_save :save_custom_field_values end
available_custom_fields()
click to toggle source
# File lib/custom_attributes/acts_as/acts_as_customizable.rb, line 37 def available_custom_fields CustomField.where("model_type = '#{self.name}CustomField'").sorted.to_a end
default_fields()
click to toggle source
# File lib/custom_attributes/acts_as/acts_as_customizable.rb, line 41 def default_fields [] end
index_custom_values(context)
click to toggle source
Helper function to index custom values Use this in mapping context and pass `self` as parameter
# File lib/custom_attributes/acts_as/acts_as_customizable.rb, line 27 def index_custom_values(context) return unless context.class.name == 'Elasticsearch::Model::Indexing::Mappings' context.indexes :visible_in_search, type: 'boolean' context.indexes :custom_field_values, type: 'nested' do context.indexes :value, type: 'text', fields: { raw: { type: 'keyword' } } context.indexes :custom_field_id, type: 'integer' end end