Хочу реализовать модель диалогов в своем приложении (в точности как ВК). Есть модели User, Conversation, Message.
class User < ActiveRecord::Base
has_and_belongs_to_many :conversations, dependent: :destroy
has_many :messages, through: conversations
class Conversation < ActiveRecord::Base
has_and_belongs_to_many :users
has_many :messages
class Message < ActiveRecord::Base
belongs_to :user
belongs_to :conversation
Также нужна соединительная таблица для users и conversations:
def change
create_table :conversations_users do |t|
t.integer :user_id
t.integer :conversations_id
t.timestamps null: false
end
add_index :conversations_users, :user_id
add_index :conversations_users, :conversation_id
add_index :conversations_users, [:user_id, :conversation_id]
end
end
Когда я хочу написать некому @user первый раз, то создается диалог:
def create
current_user.conversations.create!(user1_id: current_user.id, user2_id: @user.id)
end
Нужно, чтобы у этого @user создался диалог (общий с моим), в котором мы бы обменивались сообщениями.
Я так понял, что при переписке пользователей, у каждого есть свой диалог друг с другом, в котором они могут удалять ненужные сообщения.
Не понимаю немного как выстроить эту архитектуру. Господа рубисты, прошу Вашей помощи