2012-04-19 2 views
1

Я пытаюсь создать частную функцию обмена сообщениями на мое приложение между двумя пользователями, и я бегу в неприятностиRails Формы для Личные сообщения

Во-первых, здесь schema.rb

create_table "conversations", :force => true do |t| 
    t.string "conversation_subject 
end 

create_table "messages", :force => true do |t| 
    t.string "content" 
    t.integer "user_id" 
    t.integer "conversation_id" 
end 

create_table "participants", :force => true do |t| 
    t.integer "conversation_id" 
    t.integer "user_id" 
end 

conversations has_many :messages, :participants 
     users has_many :messages, :participants 

Форма для начала разговор:

<%= form_for @conversation do |f| %> 

    <div class="field"> 
    <strong>Subject</strong><br /> 
    <%= f.text_field :conversation_subject %> 

    </div> 
    <div class="actions"> 
<%= f.submit "Submit" %> 
    </div> 
<% end %> 

в приведенной выше форме, я хотел бы иметь

<%=f.text_area :content %> 

для сообщения также, чтобы одним щелчком мыши создавался разговор и сообщение, но я не мог использовать вложенные атрибуты здесь из-за user_id (может быть,
вы можете? но из моего понимания вы не можете)

  1. Есть ли способ обрабатывать атрибуты из двух разных моделей в одной форме без использования вложенных атрибутов?

примечание Я знаю user_id может быть взят из Послания и до сих пор имеют функциональную систему обмена сообщениями теоретически, но я думал, что для того, чтобы связать каждое сообщение с отправителем, было бы необходимо, чтобы он включен

  1. Только обходное решение, которое я мог бы подумать, это добавить и добавить_контент_сообщения и передать его в сообщение, когда диалог создается впервые. Это все, что я мог придумать с этим дизайном db. Является ли это изначально ошибочным?

Любая помощь будет замечательной. Я начинающий рельс.

Благодаря

ответ

0

У меня возникли проблемы после вдоль (длинный день), но поможет ли это?

Сообщения

belongs_to :recipient, :classname => 'User' 
belongs_to :sender, :classname => 'User' 

create_table "messages", :force => true do |t| 
    t.string "content" 
    t.integer "recipient_id" 
    t.integer "sender_id" 
    t.integer "conversation_id" 
end 
+0

Привет Кайл, спасибо. Я рассмотрю это, но как вы думаете, вы могли бы помочь мне понять, как его создать? Я никогда не видел этого раньше – railslearner

Смежные вопросы