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)
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.
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.
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)