1

我正在尝试在我的应用程序上创建两个用户之间的私人消息传递功能,但我在这里遇到了麻烦

首先,这里是 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 可以从 Message 中取出,并且理论上仍然具有功能性消息传递系统,但我认为为了将每条消息与发件人相关联,有必要将其包含在内

  1. 我可能想到的唯一解决方法是 add_content_to_conversation 并在第一次创建 Conversation 时将其传递给 Message 。这就是我能想到的这个数据库设计。这是天生的缺陷吗?

任何帮助都会很棒。我是一名铁路初学者。

谢谢

4

1 回答 1

0

I'm having trouble following along (Long day) but does this help?

Messages

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
于 2012-04-19T02:09:48.770 回答