2010-12-31 3 views
0

これは初めてのことです。私は(sqlite3が、ActiveRecordとは関係ありませんが)メッセージと呼ばれるテーブルと呼ばれるテーブルを持っています。私は、user_idまたはreciever_idがオブジェクトユーザーと同じで、その属性ID(短いuser.id)を持つデータベース内のすべてのメッセージを探したいとします。おそらく単なるコード行だとわかっていますが、私はそれを正しい "レール"のやり方でやりたいと思います。私はこれについて多くの経験がありません。2つの条件を1つのリストに入れてデータベースからデータを取得

私はRails 3を使用しています。ありがとうございました。

乾杯

+0

これは、など些細なルックスをあなたは疑って​​いますが、あなたのモデルが現在どのように見えるのかを伝えれば助けになります。 – jdl

+0

私は分かりません。おそらくそうではありません。 @messages = Message.find(:all、:conditions => {:user_id = 10)のようにできる場合は、@messages = Message.find(ここでは:limit => 10) >?:reciever_id =>?、user.id、user.id}、:limit => 10)または@messages = Message.find(:all、:conditions => [:user_id => user.id、:reciever_id => user.id]、:limit => 10)、これが正しい方法であれば、メソッドや何かのようなものを使うべきです。手伝ってくれてありがとう。 – Kreeki

答えて

1

私はあなたがあなたのコード内の多くの場所で、この関係を望むだろうと思われる、そして実際にこれが表す意味と仮定していますアプリケーションの設計の基本的な部分です。

「メッセージ」は概念的には「送信者」に属し、「受信者」にも属します。逆に、「ユーザ」は彼女が送った多くのメッセージと彼女が受け取った多くのメッセージを持っています。メッセージ・モデルの

、Userモデルに次の

belongs_to :user 
belongs_to :receiver, :class_name => "User" 

を追加し、以下の

has_many :messages 
has_many :sent_or_received_messages, :class_name => "Message", :conditions => ["user_id = ? OR receiver_id = ?", id, id]) 

を追加する今、あなたはこれを行うことができます:

my_user.messages # all of the messages the user has sent 
my_message.user # the user who sent the message 
my_message.receiver # the user who received the message 
my_user.sent_or_received_messages # all messages where the user was a sender or a receiver 
+0

「中」のコードは、私のものを最も簡単で最もアクセスしやすい方法で処理します。ありがとう。 – Kreeki

+0

もう1つ質問があります。これらのメッセージをcreated_atで降順に並べ替えるには、has_many:sent_or_received_messages、:class_name => "messages"、:conditions => ["user_id =?"、id、id]):order => "created_at DESC"?情報ありがとう。私は、SQL条件を扱うレールについてのチュートリアルを見て、実際にそれを行う必要があります。 – Kreeki

+0

これはうまくいくはずです。 ActiveRecord(Object Relational Mapper)とRailsは区別されることを覚えておいてください。あなたはAR(デフォルト)を使用していますが、他の多くのものを使用することもできます。だからあなたがグーグルであれば、ActiveRecordのドキュメントも探してください。問題ない。 – stef

0

私はあなたがユーザーhas_many :messages ....

# assuming you are looking for a particular user 
Message.where(['user_id=? OR receiver_id=?', user.id, user.id]) 
関連する問題