Ho le seguenti due modelli:Rails filettati messaggistica privata
class Message < ActiveRecord::Base
belongs_to :to_user, :class_name => 'User'
belongs_to :from_user, :class_name => 'User'
has_ancestry #Using the 'ancestry' gem
end
class User < ActiveRecord::Base
has_many :messages_received, :class_name => 'Message', :foreign_key => 'to_user_id'
has_many :messages_sent, :class_name => 'Message', :foreign_key => 'from_user_id'
end
Ogni utente è permesso di avere una conversazione con un altro utente e tutte le risposte devono essere filettato dal messaggio originale.
Nell'azione del controller 'indice' come si interrogano sia i messaggi inviati che i messaggi ricevuti? Ad esempio, se Utente1 fa clic su "/ users/2/messages /" dovrebbero vedere l'intera conversazione tra user1 e user2 (indipendentemente da chi ha inviato il primo messaggio). Devo aggiungere un modello "Thread" o esiste un modo per farlo con la mia attuale struttura?
Grazie.
Stavo cercando un modo per fare semplici conversazioni tra 2 utenti quando ho trovato questo. Sembra che funzionerà. Grazie! Ma non dovrebbe essere "has_many: conversations,: through =>: participants' nel modello User? – Vickash
Hai ragione riguardo alla mancanza di ': through' nel modello Utente. Dovrebbe anche avere 'has_many: participants' pure. – tadman
Ho appena usato questo modello nella mia app, ma ho davvero difficoltà a far scrivere un controller per creare e rispondere ai messaggi. C'è qualche possibilità di un semplice esempio? Posso iniziare come una nuova domanda se è meglio. – Dave