From 932790890a583cf877ef06a218316b82a7014b60 Mon Sep 17 00:00:00 2001 From: dima Date: Sat, 10 Dec 2011 17:21:59 +0100 Subject: fix readme and remove whitespacetrailing --- app/models/discussion.rb | 4 ++-- app/models/inboxes/ability.rb | 6 +++--- app/models/message.rb | 12 ++++++------ app/models/speaker.rb | 10 +++++----- 4 files changed, 16 insertions(+), 16 deletions(-) (limited to 'app/models') diff --git a/app/models/discussion.rb b/app/models/discussion.rb index ca56596..9e9a92c 100644 --- a/app/models/discussion.rb +++ b/app/models/discussion.rb @@ -89,11 +89,11 @@ class Discussion < ActiveRecord::Base # flag.update_attributes(:updat => Time.zone.now) speaker.touch end - + def find_speaker_by_user user Speaker.find_by_discussion_id_and_user_id(self.id, user.id) end - + private def check_that_has_at_least_two_users diff --git a/app/models/inboxes/ability.rb b/app/models/inboxes/ability.rb index 4d8408f..deb3d81 100644 --- a/app/models/inboxes/ability.rb +++ b/app/models/inboxes/ability.rb @@ -15,20 +15,20 @@ module Inboxes # and therefore should be easy to test in isolation. def self.register_ability(ability) self.abilities.add(ability) - + end def initialize(user) # raise "Initializing 3rd patry" # self.clear_aliased_actions - + # can [:index, :create], Discussion # can :read, Discussion do |discussion| # discussion.can_participate?(user) # end #include any abilities registered by extensions, etc. - + Ability.abilities.each do |clazz| ability = clazz.send(:new, user) @rules = rules + ability.send(:rules) diff --git a/app/models/message.rb b/app/models/message.rb index 3579e63..436775b 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -1,20 +1,20 @@ class Message < ActiveRecord::Base default_scope order(:created_at) - + belongs_to :discussion, :counter_cache => true, :touch => true belongs_to :user - + validates :user, :discussion, :body, :presence => true - + after_save :mark_discussion_as_read - + def visible_for? user self.created_at.to_i >= self.discussion.user_invited_at(user).to_i end - + private - + def mark_discussion_as_read self.discussion.mark_as_read_for(self.user) end diff --git a/app/models/speaker.rb b/app/models/speaker.rb index 0ed9cdd..4d8795b 100644 --- a/app/models/speaker.rb +++ b/app/models/speaker.rb @@ -1,16 +1,16 @@ class Speaker < ActiveRecord::Base belongs_to :user belongs_to :discussion - + validates_uniqueness_of :user_id, :scope => :discussion_id validates :user, :discussion, :presence => true - + after_destroy :destroy_discussion - + private - + def destroy_discussion self.discussion.destroy unless self.discussion.speakers.any? end - + end -- cgit v1.2.3 From c94547a6bab514e6df816e105f17311ba2ce73c9 Mon Sep 17 00:00:00 2001 From: dima Date: Sun, 11 Dec 2011 11:14:09 +0100 Subject: выводим количество непрочитанных сообщений в дискуссии --- app/models/discussion.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/discussion.rb b/app/models/discussion.rb index 9e9a92c..7230538 100644 --- a/app/models/discussion.rb +++ b/app/models/discussion.rb @@ -84,6 +84,12 @@ class Discussion < ActiveRecord::Base end end + # return amount of unreaded messages for current discussion + def count_unread_mess(user) + speaker = find_speaker_by_user(user) + messages.where("updated_at > ?", speaker.updated_at ).where("user_id != ?", speaker.id ).count + end + def mark_as_read_for(user) speaker = Speaker.find_or_create_by_user_id_and_discussion_id(user.id, self.id) # flag.update_attributes(:updat => Time.zone.now) @@ -100,4 +106,4 @@ class Discussion < ActiveRecord::Base errors.add :recipient_tokens, t("inboxes.discussions.choose_at_least_one_recipient") if !self.recipient_ids || self.recipient_ids.size < 2 end -end \ No newline at end of file +end -- cgit v1.2.3