Sha256: e360d16e125e4bf26400f491bf2868fda3c964e76020976236ad5f3b94ab8227

Contents?: true

Size: 1.4 KB

Versions: 2

Compression:

Stored size: 1.4 KB

Contents

class User
  include Mongoid::Document
  include Mongoid::Timestamps::Created

  field :login
  field :email
  field :role
  field :age, type: Integer
  field :password, type: String
  field :provider_uid
  field :locale

  belongs_to :site, inverse_of: :users
  has_many :articles, foreign_key: :author_id, order: :title
  has_many :comments, dependent: :destroy, autosave: true
  has_and_belongs_to_many :children, class_name: "User"
  has_one :record, autobuild: true

  embeds_one :profile

  validates :login, presence: true, uniqueness: { scope: :site }, format: { with: /\A[\w\-]+\z/ }, exclusion: { in: ["super", "index", "edit"] }
  validates :email, uniqueness: { case_sensitive: false, scope: :site, message: "is already taken" }, confirmation: true
  validates :role, presence: true, inclusion: { in: ["admin", "moderator", "member"] }
  validates :profile, presence: true, associated: true
  validates :age, presence: true, numericality: true, inclusion: { in: 23..42 }, on: [:create, :update]
  validates :password, presence: true, on: [:create, :update]
  validates :password, exclusion: { in: ->(user) { ['password'] } }
  validates :password, confirmation: { message: "Password confirmation must match given password" }
  validates :provider_uid, presence: true
  validates :locale, inclusion: { in: ->(user) { [:en, :ru] } }

  accepts_nested_attributes_for :articles, :comments

  def admin?
    false
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mongoid-rspec-3.0.0 spec/models/user.rb
mongoid-rspec-2.2.0 spec/models/user.rb