Sha256: 43718f845a7ae871132f0b9452a092da5e1df768da0b4598d7fcd384a63b690d

Contents?: true

Size: 908 Bytes

Versions: 2

Compression:

Stored size: 908 Bytes

Contents

module Elabs
  class User < ApplicationRecord
    self.table_name = 'users'

    validates :username, presence: true, uniqueness: true
    validates :role, presence: false

    # Username should:
    # - not start with '-', '_' or '.'
    # - contain only a to z characters (upper/lower cased), numbers, '.', '-' or '_'
    # - not contain successive '.', '-' or '_'
    validates_format_of :username, with: /\A(?![_.-])(?!.*[_.]{2})[a-zA-Z0-9._-]+[^_\-.]\z/

    has_many :albums,   dependent: :destroy
    has_many :articles, dependent: :destroy
    has_many :notes,    dependent: :destroy
    has_many :projects, dependent: :destroy
    has_many :uploads,  dependent: :destroy
    has_many :reports,  dependent: :destroy
    has_one  :preference, dependent: :delete

    def admin?
      role == 'admin'
    end

    after_create do
      Preference.create! user: self, show_nsfw: false
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
elabs-2.0.0 app/models/elabs/user.rb
elabs-2.0.0.pre app/models/elabs/user.rb