pic_vert_app/app/models/forum_user.rb
2015-01-21 16:19:30 +01:00

67 lines
1.9 KiB
Ruby

class ForumUser < ActiveRecord::Base
#attr_accessible :bio, :email, :firstname, :name, :password, :password_confirmation, :avatar, :moderator
has_many :topic_vieweds, :through => :forum_user_topic_vieweds, :source => :forum_topic
has_many :forum_user_topic_vieweds
has_many :followed_topics
has_many :forum_topics, :through => :followed_topics do
def enabled
where(":followed_topic.enabled = ?", true)
end
end
has_secure_password
validates_presence_of :password, :on => :create
validates :email, :presence => true, :uniqueness => true, :format => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
validates :name, :presence => true
validates :firstname, :presence => true
mount_uploader :avatar, AvatarUploader
has_many :messages, :class_name => "ForumMessage"
has_many :topics, :class_name => "ForumTopic"
has_many :images, :class_name => "ForumUserImage", :order => "created_at DESC"
belongs_to :sheet
before_create { generate_token(:auth_token) }
attr_accessor :skip_sheet_validation
def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end while ForumUser.exists?(column => self[column])
end
before_validation do
if !skip_sheet_validation
if sheet_number?
@sheet = Sheet.where(:sheet_number => sheet_number).first
if !@sheet
errors.add :sheet_number, "Votre numéro adhérent n'est pas valide."
else
self.sheet_id = @sheet.id
if @sheet.last_year < Date.today.year
errors.add :sheet_number, "Votre cotisation n'est pas à jour, merci de nous contacter."
end
end
elsif self.id
else
errors.add :sheet_number, "Vous devez saisir votre numéro adhérent (présent en bas de chaque mails)."
end
end
end
end