Class: BiovisionComponent

Inherits:
ApplicationRecord
  • Object
show all
Includes:
FlatPriority, RequiredUniqueSlug, Toggleable
Defined in:
app/models/biovision_component.rb

Overview

Biovision component entity, settings and parameters

Attributes:

active [Boolean]
created_at [DateTime]
parameters [JSON]
priority [Integer]
settings [JSON]
slug [String]
updated_at [DateTime]

Constant Summary collapse

SLUG_LIMIT =
250
SLUG_PATTERN_HTML =
'^[a-zA-Z][-a-zA-Z0-9_]+[a-zA-Z0-9]$'

Class Method Summary collapse

Instance Method Summary collapse

Methods included from FlatPriority

#change_priority

Class Method Details

.[](slug) ⇒ Object

Find component by slug

Parameters:

  • slug (String|Class)


36
37
38
# File 'app/models/biovision_component.rb', line 36

def self.[](slug)
  find_by(slug: slug.respond_to?(:slug) ? slug.slug : slug)
end

Instance Method Details

#[]=(slug, value) ⇒ Object

Deprecated.

use parameters = value

Parameters:

  • slug (String)
  • value


50
51
52
53
# File 'app/models/biovision_component.rb', line 50

def []=(slug, value)
  parameters[slug.to_s] = value
  save!
end

#admin_urlObject



78
79
80
# File 'app/models/biovision_component.rb', line 78

def admin_url
  "/admin/components/#{slug}"
end

#find_or_create_code(user, type, quantity = 1) ⇒ Object

Parameters:

  • user (User)
  • type (String)
  • quantity (Integer) (defaults to: 1)


62
63
64
65
66
67
68
69
70
71
72
# File 'app/models/biovision_component.rb', line 62

def find_or_create_code(user, type, quantity = 1)
  code = codes.owned_by(user).with_type(type).active.first

  if code.nil?
    code = codes.new(user: user, quantity: quantity)
    code.code_type = type
    code.save
  end

  code
end

#get(slug, default_value = '') ⇒ Object

Parameters:

  • slug (String)
  • default_value (String) (defaults to: '')


42
43
44
# File 'app/models/biovision_component.rb', line 42

def get(slug, default_value = '')
  parameters.fetch(slug.to_s) { default_value }
end

#privilegesObject



55
56
57
# File 'app/models/biovision_component.rb', line 55

def privileges
  biovision_component_users.recent
end


74
75
76
# File 'app/models/biovision_component.rb', line 74

def text_for_link
  I18n.t("biovision.components.#{slug}.name", default: slug)
end