diff options
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/discussion.rb | 26 | ||||
| -rw-r--r-- | app/models/discussion_view.rb | 7 | ||||
| -rw-r--r-- | app/models/message.rb | 10 |
3 files changed, 24 insertions, 19 deletions
diff --git a/app/models/discussion.rb b/app/models/discussion.rb index 474ad00..7898140 100644 --- a/app/models/discussion.rb +++ b/app/models/discussion.rb @@ -66,15 +66,13 @@ class Discussion < ActiveRecord::Base # проверяет, есть ли уже беседа между пользователями # TODO вынести в отдельный метод а в этом возращать true/false, а то неправославно как-то def self.find_between_users(user, user2) - res = nil + dialog = nil discussions = self.joins(:speakers).includes(:users).where("speakers.user_id = ?", user.id) Rails.logger.info "Searching for ids: #{user.id}, #{user2.id}" discussions.each do |discussion| - - res = discussion if discussion.private? && ((discussion.users.first == user && discussion.users.last == user2) || (discussion.users.first == user2 && discussion.users.last == user)) - Rails.logger.info "Searching for ids: #{discussion.users.inspect}" if discussion.private? + dialog = discussion if discussion.private? && ((discussion.users.first == user && discussion.users.last == user2) || (discussion.users.first == user2 && discussion.users.last == user)) end - res + dialog end # приватная/групповая @@ -88,14 +86,14 @@ class Discussion < ActiveRecord::Base end # проверка, является ли дискуссия непрочитанной для пользователя - # def unread_for?(user) - # flag = self.views.find_by_user_id(user.id) - # if flag - # self.updated_at >= flag.updated_at - # else - # true - # end - # end + def unread_for?(user) + flag = self.views.find_by_user_id(user.id) + if flag + self.updated_at >= flag.updated_at + else + true + end + end # пометить как прочитанная def mark_as_read_for(user) @@ -112,7 +110,7 @@ class Discussion < ActiveRecord::Base 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, "Укажите хотя бы одного получателя" 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 new file mode 100644 index 0000000..5714bb5 --- /dev/null +++ b/app/models/discussion_view.rb @@ -0,0 +1,7 @@ +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/message.rb b/app/models/message.rb index a38dfb0..b7f9b12 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -7,16 +7,16 @@ class Message < ActiveRecord::Base validates :user, :discussion, :body, :presence => true - # after_save :touch_discussion_and_mark_as_read + after_save :touch_discussion_and_mark_as_read - # def visible_for? user - # self.created_at.to_i >= self.discussion.user_invited_at(user).to_i - # end + def visible_for? user + self.created_at.to_i >= self.discussion.user_invited_at(user).to_i + end private def touch_discussion_and_mark_as_read self.discussion.touch - # self.discussion.mark_as_read_for(self.user) + self.discussion.mark_as_read_for(self.user) end end |
