アナタからの手紙。

ら〜ぶれたー ふろ〜む あなーた〜♪


スマン、思いつきwww


で、メッセージが誰が送ったのか、誰に送ったのかが解らないと、宛名のない手紙になっちゃうよね?
今ググってみて、そんな曲があるのを、はじめて知ったよwww


さすがに、狩人とか、全然わかんねぇしっ!


んで、UserモデルとMessageモデルの関連付け。

実は、これで、かなりの紆余曲折があって、ですね。
昨日一日、これを考えていたようなもんですよ。


普通に一対多なんだったら、どうって事無いんだけど、

  • 送信者(User) has_many => メッセージ(Message)
  • 受信者(User) has_many => メッセージ(Message)

の、入り口二つで出口が一つ、な主従関係がある訳ですわ。
でも、

has_many :messages

belongs_to :users

では、入り口も出口も一つになっちゃうよね?


それでは、困るんだwww


で、実は、前のエントリーでやったことって、これが解決してから、だったりなんかするんだけどwww
時系列、シカトしちゃってますけどwww


まあ、サマータイムマシン・ブルースなんか観たりなんかしちゃってたからなんでしょうかね?www


いや、上野樹里、いいね:-)
いやいや、真木よう子もそれはそれで、なかなか:-D


まあ、それは、それ、で、ですね。
結論として、実は、オイラは、飛んでもない(でも、基本的な)勘違いをしていたことが、発覚しましたwww


普通、関連性を記述する時には、

  has_many :hogehoge

って書く訳だけれども。
この、「hogehoge」って、モデル名を指定している訳では無くって、実は、クラス名を指定していたんですねぇ...
(いやいや、なんか、自分で書いていて、ちょっとオカシイことには気が付いているんだよ。ゲフンゲフン)


そりゃあ、自己参照型の多対多の記述が理解出来ないはずですわwww


で。
だったら、クラスを作っちゃったフリすれば、良いんじゃね?
で、名前の違うクラスもどきで、Userモデルに関連付ければ、良いんじゃね?
と、相成った訳ですよ。


んで、コード。
app/models/message.rb

+  belongs_to :sender,   :class_name => "User"
+  belongs_to :reciever, :class_name => "User"

で、ここで、「sender」と「reciever」の二つのクラスを作ったフリ。
実体は、User。


んで、Userモデル。
app/models/message/rb
>|ruby
has_many :sent_messages, :foreign_key => :sender_id,
:class_name => "Message"
has_many :recieved_messages, :foreign_key => :reciever_id,
:class_name => "Message"
|