app/models/guts/user.rb in guts-1.3.6 vs app/models/guts/user.rb in guts-1.4.0
- old
+ new
@@ -1,34 +1,46 @@
module Guts
# User model
class User < ActiveRecord::Base
include TrackableConcern
-
+
# Regex to test email against for validation
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
-
+
validates :name, presence: true, length: { maximum: 50 }
validates :email,
presence: true,
length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
validates :password, presence: true, length: { minimum: 6 }, allow_nil: true
-
+
has_secure_password
has_many :media, as: :filable, dependent: :destroy
has_many :metafields, as: :fieldable, dependent: :destroy
has_many :user_groups
has_many :groups, through: :user_groups
has_many :tracks, as: :object
has_many :contents
-
+ has_many :permissions, as: :permissionable, dependent: :destroy
+
+ delegate :can?, :cannot?, to: :ability
+
trackable :create, :update, :destroy, fields: [:name, :group_id]
-
+
scope :in_group, -> (group) { includes(:groups).where(guts_groups: { id: group.id }) }
-
+
# Setter override for email to downcase and strip email before database
+ # @param [String] email the email to set
+ # @return [String] cleaned email string
def email=(email)
self[:email] = email.downcase.strip
+ end
+
+ # Gets the user's abilties
+ # @see Guts::Ability
+ # @return [Class] the abilities for this user
+ def ability
+ @ability ||= Guts::Ability.new self
end
end
end