Събития, свързани с вашия акаунт
Каква е целта? Когато някои коментира на място където вие сте коментирали или ако някои коментира под ваш пост да получите известие.

Това може да стане по няколко начина. Аз ще ви напиша моя.

Правим таблица:


class CreateMessages < ActiveRecord::Migration
def self.up
create_table :messages do |t|
t.integer :user_id
t.string :text
t.integer :post_id
t.string :from

t.timestamps
end
end

def self.down
drop_table :messages
end
end


След което когато някои пусне коментар и след стандартното записване на коментара слагаме още малко код в същата функция.


who_comment = Comment.find(:all, :select => 'DISTINCT user_id',
:conditions => ['post_id =? and user_id !=? and user_id !=?',params[:comment]
[:post_id],current_user.id,post.user_id])
for f in who_comment
message = Message.new(:user_id => f.user_id, :text=> post.post, :post_id => post.id,
:from => params[:comment][:name])
message.save
end
unless current_user.id == post.user_id
message = Message.new(:user_id => post.user_id, :text=> post.post,
:post_id => post.id, :from => params[:comment][:name])
message.save
end


Логиката е следната. Когато някои пусне коментар записваме във времената таблица messages съобщения към всички който са коментирали и накрая към този на който е поста.

Първия ред с DISTINCT вади всички уникални коментирали в поста. За да не пратите на един човек 2 съобщения. След което извъртаме един цикъл for f in who_comment в който записваме съобщения за всички които са коментирали без на този които коментира и на този на които е поста.

След това проверяваме дали този които пуска коментара е пуснал и поста и ако не изпращаме съобщение и на собственика на целия пост.

След това просто извиквате съобщенията по user_id на всеки човек. Имаме всичко необходимо за да извадим от тези данни каквото пожелаем с хелпърите. Това което може да се подобри е полето from да е integer и да съдържа user_id на човека който е коментирал и после да си направим един get_name_by_id хелпър с който да взимаме името му.
Коментирай
 
Потребител : *
Сайт (URL) :
Коментар : *
Въведи текста : *
   _____    ______    ____     _    _     _____   
  / ___//  /_   _//  |  _ \\  | || | ||  / ____|| 
  \___ \\   -| ||-   | |_| || | || | || / //---`' 
  /    //   _| ||_   | .  //  | \\_/ || \ \\___   
 /____//   /_____//  |_|\_\\   \____//   \_____|| 
`-----`    `-----`   `-` --`    `---`     `----`  
                                                  
 
Предложи тема
Предложение от : *
Тема : *
Описание : *