diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/discussions_controller.rb | 2 | ||||
| -rw-r--r-- | app/models/discussion.rb | 20 | ||||
| -rw-r--r-- | app/models/discussion_view.rb | 7 | ||||
| -rw-r--r-- | app/models/speaker.rb | 6 |
4 files changed, 10 insertions, 25 deletions
diff --git a/app/controllers/discussions_controller.rb b/app/controllers/discussions_controller.rb index 48f6652..5e769fb 100644 --- a/app/controllers/discussions_controller.rb +++ b/app/controllers/discussions_controller.rb @@ -14,7 +14,7 @@ class DiscussionsController < ApplicationController @discussion = Discussion.includes(:messages, :speakers).find(params[:id]) redirect_to discussions_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user) - @discussion.mark_as_read_for(current_user) + # @discussion.mark_as_read_for(current_user) end # GET /discussions/new diff --git a/app/models/discussion.rb b/app/models/discussion.rb index 7cab6f0..aa4ce3e 100644 --- a/app/models/discussion.rb +++ b/app/models/discussion.rb @@ -13,11 +13,10 @@ class Discussion < ActiveRecord::Base has_many :users, :through => :speakers # отметки о прочтении юзеров - has_many :views, :dependent => :destroy, :class_name => "DiscussionView" scope :unread_for, (lambda do |user_or_user_id| user = user_or_user_id.is_a?(User) ? user_or_user_id.id : user_or_user_id - joins(:views, :speakers).where("discussions.updated_at >= discussion_views.updated_at AND speakers.user_id = ? AND discussion_views.user_id = ?", user, user) + joins(:speakers).where("discussions.updated_at >= speakers.updated_at AND speakers.user_id = ?", user) end) accepts_nested_attributes_for :messages @@ -26,7 +25,7 @@ class Discussion < ActiveRecord::Base # добавляем записи об указанных собеседников after_save(:on => :create) do - Rails.logger.info("Repicients ids: #{recipient_ids.inspect}") + # Rails.logger.info("Repicients ids: #{recipient_ids.inspect}") if recipient_ids.kind_of?(Array) recipient_ids.uniq! @@ -89,9 +88,9 @@ class Discussion < ActiveRecord::Base # проверка, является ли дискуссия непрочитанной для пользователя def unread_for?(user) - flag = self.views.find_by_user_id(user.id) - if flag - self.updated_at >= flag.updated_at + speaker = find_speaker_by_user(user) + if speaker + self.updated_at >= speaker.updated_at else true end @@ -99,9 +98,9 @@ class Discussion < ActiveRecord::Base # пометить как прочитанная def mark_as_read_for(user) - # true - flag = DiscussionView.find_or_create_by_user_id_and_discussion_id(user.id, self.id) - flag.touch + 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 @@ -111,8 +110,7 @@ class Discussion < ActiveRecord::Base private def check_that_has_at_least_two_users - Rails.logger.info self.recipient_ids - errors.add :recipient_tokens, "Укажите хотя бы одного получателя" if !self.recipient_ids || self.recipient_ids.size < 2 + 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 diff --git a/app/models/discussion_view.rb b/app/models/discussion_view.rb deleted file mode 100644 index 5714bb5..0000000 --- a/app/models/discussion_view.rb +++ /dev/null @@ -1,7 +0,0 @@ -class DiscussionView < ActiveRecord::Base - belongs_to :user - belongs_to :discussion - - validates :user, :discussion, :presence => true - validates_uniqueness_of :user_id, :scope => :discussion_id -end diff --git a/app/models/speaker.rb b/app/models/speaker.rb index 86be7dc..0ed9cdd 100644 --- a/app/models/speaker.rb +++ b/app/models/speaker.rb @@ -5,16 +5,10 @@ class Speaker < ActiveRecord::Base validates_uniqueness_of :user_id, :scope => :discussion_id validates :user, :discussion, :presence => true - after_destroy :destroy_discussion_view after_destroy :destroy_discussion private - def destroy_discussion_view - @view = DiscussionView.find_by_user_id_and_discussion_id(self.user_id, self.discussion_id) - @view.destroy if @view - end - def destroy_discussion self.discussion.destroy unless self.discussion.speakers.any? end |
