Разработка системы пользовательских сообщений (да, я знаю ... еще одна из них).
У меня есть:
class Conversation << AR::Base
has_many :messages
end
class Message << AR::Base
belongs_to :conversation
# this is what I want, create a conversation if one isn't assigned
before_create :assign_to_conversation, :unless => :conversation
def
# but this won't save parent association
build_conversation(:subject => subject, :starter => user)
end
end
По сути, я хочу отслеживать сообщения как часть разговора. Если пользователь отправляет новое сообщение, оно должно стать частью нового разговора. Если сообщение является ответом на существующее сообщение, я просто хочу назначить сообщение этому конкретному разговору.
В messages_controller я хочу просто сделать
def create
@message.save(params[:message]).
end
Без необходимости идти с
def create
transaction do
c = Conversation.build(...)
c.messages.build(params[:message])
c.save
end
end
Я стараюсь, чтобы мои контроллеры были простыми, а также осуществляю беседы и создание сообщений в рамках одной транзакции.