diff options
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/discussion.rb | 12 | ||||
| -rw-r--r-- | app/models/inboxes/ability.rb | 6 | ||||
| -rw-r--r-- | app/models/message.rb | 12 | ||||
| -rw-r--r-- | app/models/speaker.rb | 10 |
4 files changed, 23 insertions, 17 deletions
diff --git a/app/models/discussion.rb b/app/models/discussion.rb index ca56596..7230538 100644 --- a/app/models/discussion.rb +++ b/app/models/discussion.rb @@ -84,20 +84,26 @@ 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) 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 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 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 |
