48 lines
1.1 KiB
Ruby
48 lines
1.1 KiB
Ruby
|
# fq
|
||
|
class WatchersOfProjects < ActiveRecord::Base
|
||
|
attr_accessible :project_id, :user_id
|
||
|
belongs_to :project
|
||
|
belongs_to :user
|
||
|
|
||
|
validate :validate_user
|
||
|
validate :validate_project
|
||
|
validates_uniqueness_of :user_id, :scope => :project_id
|
||
|
validates_presence_of :user_id, :project_id
|
||
|
|
||
|
def self.watch(user_id, project_id)
|
||
|
@new_watch = WatchersOfProjects.new
|
||
|
@new_watch.user_id = user_id
|
||
|
@new_watch.project_id = project_id
|
||
|
@new_watch.save
|
||
|
true
|
||
|
end
|
||
|
|
||
|
def self.watcher_count(project)
|
||
|
@project = project
|
||
|
@count = @project.watchers_of_projects.count
|
||
|
@count
|
||
|
end
|
||
|
|
||
|
def self.is_watched(user_id, project_id)
|
||
|
@is_watched = self.where("user_id = ? and project_id = ?", user_id, project_id).to_a.first
|
||
|
if @is_watched.nil?
|
||
|
false
|
||
|
else
|
||
|
true
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def self.watch_cancle(user_id, project_id)
|
||
|
self.delete_all(["user_id = ? and project_id = ?", user_id, project_id])
|
||
|
true
|
||
|
end
|
||
|
|
||
|
def validate_user
|
||
|
errors.add :user_id, :invalid if user.nil? || !user.active?
|
||
|
end
|
||
|
|
||
|
def validate_project
|
||
|
errors.add :project_id, :invalid if project.nil?
|
||
|
end
|
||
|
end
|