Rails使用私人邮件形式(Rails Forms for Private Messaging)

2019-09-16 14:47发布

我想在我的两个用户之间的应用程序创建一个私信功能和我正在这里遇到麻烦。

首先,这里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. 唯一的解决办法我可能想到的是add_content_to_conversation以及并把它传递到消息首次创建会话时。 这是所有我能想到的与此数据库的设计。 难道这固有的缺陷?

任何帮助将是巨大的。 我是一个初学者的轨道。

谢谢

Answer 1:

我有(朗天)沿着以下的麻烦,但是这是否帮助?

消息

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


文章来源: Rails Forms for Private Messaging