Sha256: 358d433e4b02218a327ff728b12453c442aa279ba944685cb8c988f5a50b8fa7

Contents?: true

Size: 1.97 KB

Versions: 9

Compression:

Stored size: 1.97 KB

Contents

class Node < ApplicationRecord 

  ####################################################################

    # Central Repository
    ##########################################

      # Virtual attrs
      attr_accessor :seed # => https://richonrails.com/articles/skipping-validations-in-ruby-on-rails

      # Associations
      # http://blog.bigbinary.com/2016/02/15/rails-5-makes-belong-to-association-required-by-default.html
      belongs_to :user, optional: true

      # Validations
      validates :ref, :val, length: { minimum: 2,         message: "2 characters minimum" },          unless: :seed
      validates :ref, exclusion:    { in: %w(meta role),  message: "%{value} is reserved" },          unless: :seed  # => http://stackoverflow.com/a/17668634/1143732
      validates :ref, uniqueness:   {                     message: "%{value} cannot be duplicate" },  unless: :seed
      validates :val, uniqueness:   { scope: :ref,        message: "%{value} cannot be duplicate" }

      # Friendly ID
      extend FriendlyId
      friendly_id :title

    ##########################################

      # Aliases
      alias_attribute :title,       :ref
      alias_attribute :value,       :val
      alias_attribute :content,     :val
      alias_attribute :description, :val

    ##########################################

      # Instance (private)
      ###################

      # => Partial Path
      # => https://www.cookieshq.co.uk/posts/rails-tips-to-partial-path/
      def to_partial_path
        self.class.name.underscore # => http://blog.obiefernandez.com/content/2012/01/rendering-collections-of-heterogeneous-objects-in-rails-32.html
      end

      # => For form
      def is_destroyable?
        true
      end

      # Class (public)
      ###################

      # => Ref / Val
      # => Meta::Role.val "admin"
      scope :ref, ->(ref) { find_by ref: ref }
      scope :val, ->(val) { find_by val: val }

  ####################################################################

end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
fl-0.3.9 app/models/node.rb
fl-0.3.8 app/models/node.rb
fl-0.3.6 app/models/node.rb
fl-0.3.5 app/models/node.rb
fl-0.3.4 app/models/node.rb
fl-0.3.3 app/models/node.rb
fl-0.3.2 app/models/node.rb
fl-0.3.1 app/models/node.rb
fl-0.3.0 app/models/node.rb