|
- class ContestingProject < ActiveRecord::Base
- attr_accessible :contest_id, :description, :project_id, :user_id, :reward
-
- belongs_to :contest
- belongs_to :project
- belongs_to :user
-
- DESCRIPTION_LENGTH_LIMIT = 500
-
- validates_length_of :description, :maximum => DESCRIPTION_LENGTH_LIMIT
- validates_presence_of :user_id, :contest_id, :project_id
- validate :validate_user
- validate :validate_contest
- validate :validate_project
- validates_uniqueness_of :contest_id, :scope => :project_id
-
- def self.cerate_contesting(contest_id, project_id, description = nil)
- self.create(:user_id => User.current.id, :contest_id => contest_id,
- :project_id => project_id, :description => description)
- end
-
-
- def update_reward(which)
- self.update_attribute(:reward,which)
- end
-
- def get_reward
- self.reward
- end
-
- def cancel_contesting
- unless self.nil?
- if User.current.id == self.user_id
- self.destroy
- end
- end
- end
-
- private
-
- def validate_user
- errors.add :user_id, :invalid if user.nil? || !user.active?
- end
-
- def validate_contest
- errors.add :contest_id, :invalid if contest.nil?
- end
-
- def validate_project
- errors.add :project_id, :invalid if project.nil?
- end
- end
|