私はあなたがあなたのコード内の多くの場所で、この関係を望むだろうと思われる、そして実際にこれが表す意味と仮定していますアプリケーションの設計の基本的な部分です。
「メッセージ」は概念的には「送信者」に属し、「受信者」にも属します。逆に、「ユーザ」は彼女が送った多くのメッセージと彼女が受け取った多くのメッセージを持っています。メッセージ・モデルの
、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
これは、など些細なルックスをあなたは疑っていますが、あなたのモデルが現在どのように見えるのかを伝えれば助けになります。 – jdl
私は分かりません。おそらくそうではありません。 @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