Sha256: 4e3e9f1117341e7ddbd78dcefa6bad39872fae89c612a2be4a31830e11bf3d29

Contents?: true

Size: 1.57 KB

Versions: 20

Compression:

Stored size: 1.57 KB

Contents

# Function Model
module KepplerFrontend
  class Function < ActiveRecord::Base
    include ActivityHistory
    include CloneRecord
    require 'csv'
    acts_as_list
    acts_as_paranoid
    before_save :underscore_and_downcase_name
    before_destroy :delete_function
    before_validation :without_special_characters

    include KepplerFrontend::Concerns::Functions::FunctionsFile
    include KepplerFrontend::Concerns::StringActions

    has_many :parameters, dependent: :destroy, inverse_of: :function
    accepts_nested_attributes_for :parameters, reject_if: :all_blank, allow_destroy: true

    validates_presence_of :name, :description
    validates_uniqueness_of :name

    def underscore_and_downcase_name
      self.name = self.name.split(' ').join('_').downcase
    end

    def parse_parameters
      params = self.parameters.map { |p| p.name }
      params.split(' ').join(', ')
    end

    # Fields for the search form in the navbar
    def self.search_field
      fields = ["name", "description", "position", "deleted_at"]
      build_query(fields, :or, :cont)
    end

    def self.upload(file)
      CSV.foreach(file.path, headers: true) do |row|
        begin
          self.create! row.to_hash
        rescue => err
        end
      end
    end

    def self.sorter(params)
      params.each_with_index do |id, idx|
        self.find(id).update(position: idx.to_i+1)
      end
    end

    # Funcion para armar el query de ransack
    def self.build_query(fields, operator, conf)
      query = fields.join("_#{operator}_")
      query << "_#{conf}"
      query.to_sym
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
keppler-2.1.18 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.17 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.16 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.15 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.14 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.13 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.12 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.11 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.10 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.9 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.8 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.7 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.6 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.5 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.4 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.3 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.2 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.1 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1.pre.p1 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb
keppler-2.1 installer/core/rockets/keppler_frontend/app/models/keppler_frontend/function.rb