class AttributeModel include Mongoid::Document include Mongoid::Timestamps field :key field :i18n_variable_id, :type => BSON::ObjectId, :index => true field :markup field :locale, :type => Boolean field :list_options, :type => Array field :built_in, :type => Boolean, :default => false field :disabled, :type => Boolean, :default => false embedded_in :user_attribute_model validates_uniqueness_of :key # Destroy the i18n_variable def destroy_i18n_variable self.i18n_variable.destroy rescue nil end # Get the i18n_variable def i18n_variable @i18n_variable ||= I18nVariable.find(self.i18n_variable_id) rescue nil end # Update or create the i18n_variable record def i18n_variable=(attr) if self.i18n_variable_id self.i18n_variable.update_attributes(attr) else # var = I18nVariable.new(attr.merge({:key => self.key, :document_class => self.class, :parent_id => self.user_attribute_model.i18n_variable_id})) var = I18nVariable.new(attr.merge({:key => self.key, :document_class => self.class})) var.save self.i18n_variable_id = var.id end end # Convert the string list_options into an array def select_list_options=(var) self.list_options = var.gsub(' ', '').split(',') end # Convert the array list_options into a string def select_list_options self.list_options.to_a.join(', ') end # Check if the attribute is set to be destroyed def should_destroy? should_destroy.to_i == 1 rescue nil end def is_built_in? self.built_in end def is_disabled? self.disabled end end