Jak zrobić prywatne wiadomości?

Cześć piszę tutaj, by zapytać Was jak najlepiej zrobić (bezpieczne) wiadomości prywatne. Powinno to wyglądać mniej więcej tak:

Krista (nagłówek na obraku) - to byłaby nazwa tematu.
No i potem już tylko odpowiedź pod odpowiedzią - zależy mi, żeby to było bezpieczne, raz użyłem plugina simple_private_messages - ale to głupota.
Czekam na propozycje jak to zrobić i żeby to było w miarę bezpieczne (żeby nikt nie mógł czytać cudzych wiadomości)

pozdrawiam

Jeśli ma być między 2 osobami to wiadomość ma 2 pola od kogo i do kogo i tyle zwykła autoryzacja i autentykacja. Gemy i rozwiązania są gotowe. (Device + CanCan) np

tylko od kogo i do kogo? szefie, jak chcesz coś napisać, to pisz z sensem, a nie na odpierdol, żeby sobie posta nabić - przecież ja chcę mieć odpowiedź pod odpowiedzią, więc muszę mieć relację has_many :messages - przynajmniej takie 3 pola -.-

Gotar pewnie zakładał że chcesz aby ten mechanizm działał tak jak w komórkach (jak już wkleiłeś screen) np. w androidzie. Czyli jako wątek wyświetla Ci wiadomości przefiltrowane po danej osobie (2 pola tutaj wystarczą) i posortowane po dacie utworzenia.
Pytanie czy np. w wątku moga uczestniczyć więcej niż jedna osoba i takie tam. Co do bezpieczeństwa to piszesz mechanizm logowania/autoryzacji (Devise) a potem odpowiednio filtrujesz (cóż może być prostszego) w kontrolerach.

Życzę trochę kultury i szerszego spojrzenia ;->

Message:
author_id:integer
receiver_id:integer
content:text
created_at:timestamp

Jak chcesz wejść w wątek z daną osobą, to filtrujesz wiadomości, które mają author_id = 1 i receiver_id = 2, lub author_id = 2 i receiver_id = 1 i tak jak kolega wyżej napisał, sortowanie po dacie utworzenia (created_at). Oczywiście id = 1, 2 to identyfikatory osób, które prowadzą rozmowę.

tylko od kogo i do kogo? szefie, jak chcesz coś napisać, to pisz z sensem, a nie na odpierdol, żeby sobie posta nabić - przecież ja chcę mieć odpowiedź pod odpowiedzią, więc muszę mieć relację has_many :messages - przynajmniej takie 3 pola -.-[/quote]
Ho ho, widzę że kolega z dużym forumowym stażem. Radziłbym spuścić z tonu.

kiedyś był gem nawet taki privat_messages albo coś takiego ale raczej nie rozwijalny jednak możesz zobaczyć tam jak to powinno się zrobić

Ostatnio miałem przyjemność z niego korzystać, niemniej jednak jest kiepski, jeśli chodzi o sposób wyświetlania/dodawania jaki życzy sobie autor tematu. Trzeba byłoby go ręcznie przerabiać. Więc zdecydowanie odradzam ten gem.

Osobiście pisałbym to sam… Mimo małej wiedzy na temat ROR. Sprawa wygląda bardzo prosto. 3 tabele w bazie

Co do bezpieczeństwa:

  • W momencie rozpoczęcia konwersacji między użytkownikami tworzysz unikalne id konwersacji
  • Potem już tylko wyświetlasz wszystkie wpisy z danego id… odpowiednio posortowane…
  • Dodatkowo możesz zapisywać w bazie id użytkownika i id konwersacji (wtedy podczas wysyłania i czytania wpisów sprawdzasz czy w bazie masz już taki wpis i kiedy traci ważność. Czyli na 1 konwersacje przyjdą 2 wpisy w danej tabeli z kolumnami form|to|expired i te 2 wpisy aktualizujesz za każdym razem jak ktoś coś zapisze. expired po to by 1 konwersacja nie ciągła się w nie skończoność od strony sprawdzana użytkowników)

Coś w tym stylu.