Sha256: acae3f31915be650e284faa4284976bf8bb4360e3217a849e04a8ccbb4b856c8

Contents?: true

Size: 1.44 KB

Versions: 5

Compression:

Stored size: 1.44 KB

Contents

class User < BazaModels::Model
  attr_accessor :custom_valid, :before_save_block_called, :validate_confirmation, :validate_uniqueness

  belongs_to :organization
  has_one :person, dependent: :restrict_with_error
  has_one :user_passport, dependent: :destroy

  has_many :roles, dependent: :destroy
  has_many :admin_roles, -> { where(role: "administrator") }, class_name: "Role", dependent: :restrict_with_error

  validates :email, presence: true, length: {minimum: 2, maximum: 100}, format: {with: /\A(.+)@(.+)\.(.+)\Z/}
  validate :validate_custom_errors
  validates_uniqueness_of :email, scope: :organization_id, if: :validate_uniqueness
  validates_confirmation_of :email, if: :validate_confirmation

  scope :admin_roles_scope, -> { joins(:roles).where(roles: {role: "administrator"}) }

  before_save do
    self.before_save_block_called ||= 0
    self.before_save_block_called += 1
  end

  # Used to test callbacks.
  BazaModels::Model::CALLBACK_TYPES.each do |callback_type|
    attr_reader "#{callback_type}_called"
    __send__(callback_type, :add_callback, callback_type)
  end

private

  def add_callback(callback_type)
    variable_name = "@#{callback_type}_called"
    instance_variable_set(variable_name, 0) unless instance_variable_get(variable_name)
    instance_variable_set(variable_name, instance_variable_get(variable_name) + 1)
  end

  def validate_custom_errors
    errors.add(:base, "Custom validate failed") if custom_valid == false
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
baza_models-0.0.5 spec/test_classes/user.rb
baza_models-0.0.4 spec/test_classes/user.rb
baza_models-0.0.3 spec/test_classes/user.rb
baza_models-0.0.2 spec/test_classes/user.rb
baza_models-0.0.1 spec/test_classes/user.rb