# == Schema Information
#
# Table name: groupers
#
#  id         :integer          not null, primary key
#  task       :string(255)
#  created_at :datetime
#  updated_at :datetime
#  group_id   :integer
#  user_id    :integer
#
# Indexes
#
#  index_groupers_on_group_id  (group_id)
#  index_groupers_on_user_id   (user_id)
#

class Grouper < ActiveRecord::Base
  #attr_protected :id, :created_at, :updated_at
  attr_accessor :username

  belongs_to :group, :optional => true
  belongs_to :user, :optional => true

  validates_associated :group, :user
  validates :group, :user, :presence => true
  validates :task, :length => {:maximum => 25}

  scope :valid_users, -> { joins(:user).where.not(users: { id: nil }) }

  before_validation :fetch_user, :if => Proc.new {|grouper| grouper.username and !grouper.username.empty?}

  def to_s
    user.to_s
  end

  def fetch_user
    self.user = User.find_by_username(username)
  end

  def can_create? cuser
    cuser and cuser.admin?
  end

  def can_update? cuser
    cuser and cuser.admin?
  end

  def can_destroy? cuser
    cuser and cuser.admin?
  end

  
end