0

ユーザーモデルとメッセージモデルがあります。私のユーザーhas_manyメッセージと私のメッセージbelongs_touser。

私のメッセージモデルでは、属性:content、:user_id、:to_idがあります。

:user_idは外部キーとして機能し、「送信者」と見なすこともできますが、:to_idは「受信者」と見なすこともできます。

私のメッセージインデックステンプレートでは、すべてのメッセージを表示しようとすると、次のようなことをします...

<%= link_to message_item.user.name, message_item.user %>

その行は、受信したメッセージを表示するときにうまく機能します(im:to_idと:user_idは、誰がメッセージを送信したかを示しています)

ただし、「送信済み」カテゴリの下にメッセージを一覧表示する場合、上記のコード行を実行すると、:to_idではなく常に私の名前が表示されます(im:user_idのため)。

理想的には私は次のようなものが欲しいでしょう

<%= message_item.to_id %>

私の送信したカテゴリ。:to_idカテゴリに記載されているユーザーオブジェクトを取得する方法はありますか?message_item.to_idはユーザーオブジェクトではなく整数を返すため、message_item.to_id.nameのようなものは機能しません。それを取得する方法はありますか?

送信者を表示してリンクしようとしたときに、失敗した試みは次のとおりです

    <% if current_user == message_item.user %>
    <%= message_item.to_id %>
    <% else %>
        <%= link_to message_item.user.name, message_item.user %>
    <% end %>

ありがとう

4

2 に答える 2

2

あなたがする必要があるのは、受信者の関係を次のように定義することですmessage.rb

belongs_to :to,
  :class_name => 'User',
  :foreign_key => :to_id

to_id私は、あなたがそういうことを言うなら、それは通常より明確であるとto_user_id思うので、あなたが他の何かではなく、ユーザーについて話していることは明らかです。

今、あなたは呼び出すことができます:

<%= link_to(message.to.name, message.to) %>
于 2012-04-24T02:59:29.960 に答える
1

これはおかしいです、私は今日同様の質問に答えました。

まず、モデルをこのように設定する必要がありますMessageUser

したがって、送信されたメッセージには、次のものを使用できます。

<%- current_user.messages.each do |message| -%>
  <%= link_to message.recipient.name, user_path(message.recipient) %>
<%- end -%>

そして、受信したメッセージについて:

<%- current_user.messages_received.each do |message| -%>
  <%= link_to message.user.name, user_path(message.user) %>
<%- end -%>

それで十分なはずです。

于 2012-04-24T06:23:17.027 に答える