2013-08-04 10:59:25 +08:00
# fq
2013-08-01 10:33:49 +08:00
class WatchersOfUser < ActiveRecord :: Base
attr_accessible :user_id , :watcher_id
belongs_to :user
validates_uniqueness_of :watcher_id , :scope = > :user_id
validate :validate_user
validate :validate_watcher
validates_presence_of :watcher_id , :user_id
def self . watch_user ( watcher_id , user_id )
unless user_id == watcher_id
@watchers_of_user = WatchersOfUser . new
@watchers_of_user . watcher_id = watcher_id
@watchers_of_user . user_id = user_id
@watchers_of_user . save
true
else
false
end
end
def cancel_watching_user
self . class . cancel_watching_user ( self . watcher_id , self . user_id )
end
def self . cancel_watching_user ( watcher_id , user_id )
self . delete_all ( [ " user_id = ? and watcher_id = ? " , user_id , watcher_id ] )
true
end
def self . find_users ( watcher_id )
@user = WatchersOfUser . find_by_sql ( " select * from users where id in (select user_id from #{ WatchersOfUser . table_name } where watcher_id = #{ watcher_id } ) " )
@user
# @watch_table_for_user=WatchersOfUser.where(:watcher_id => watcher_id)
# @user = []
# @watch_table_for_user.each do |watch|
# @user.push(watch.user)
# end
# @user
end
def self . find_watchers ( user_id )
@watcher = WatchersOfUser . find_by_sql ( " select * from users where id in (select watcher_id from #{ WatchersOfUser . table_name } where user_id = #{ user_id } ) " )
@watcher
# user = User.find(user_id)
# @watch_table_for_watcher = user.watchers_of_users
# @watcher = []
# @watch_table_for_watcher.each do |watch|
# user_temp = User.find(watch.watcher_id)
# @watcher.push(user_temp)
# end
# @watcher
end
#验证user是否存在
def validate_user
errors . add :user_id , :invalid if user . nil? || ! user . active?
end
#验证watcher是否存在
def validate_watcher
user = User . where ( " id = ? " , watcher_id ) . to_a . first
errors . add :watcher_id , :invalid if user . nil? || ! user . active?
end
end