2

単一のレコードのみを返すこの検索クエリを作成しました。

 @messages = Message.find_by_sender_username(@user.username)

 #<Message id: 1, sender_username: "emmanuel", reciepent_username: "elias", body: "Die erste Nachricht", gelesen: "", created_at: "2013-10-26 11:17:53", updated_at: "2013-10-26 11:17:53"> 

私の Message モデルには、sender_username "emmanuel" を持つ 2 つのレコードがありますが

 #<Message id: 1, sender_username: "emmanuel", reciepent_username: "elias", body: "Die erste Nachricht", gelesen: "", created_at: "2013-10-26 11:17:53", updated_at: "2013-10-26 11:17:53"> 
 #<Message id: 2, sender_username: "emmanuel", reciepent_username: "vera", body: "Was soll ich dazu sagen", gelesen: "", created_at: "2013-10-26 11:23:57", updated_at: "2013-10-26 11:23:57">

問題は、モデル間に実際の関係がないことだと思います:

管理者 ユーザー名:文字列

ユーザー 名:文字列

メッセージ

送信者_ユーザー名:文字列

reciepent_username:文字列

本体:文字列

読み取り:ブール値

MyQuestionは、このモデル間のリレーションをどのように記述すべきかということです。そのようなリレーションの forgein_key について何かを伝えましたが、それをどのように利用するかは 100% 確信が持てません!

4

2 に答える 2

1

find_by_sender_username一致した最初のレコードのみを常に返します。

whereすべてのレコードを取得するために使用する必要があります。

@messages = Message.where(sender_username: @user.username)
于 2013-10-26T12:10:34.233 に答える