アナタからの手紙。
ら〜ぶれたー ふろ〜む あなーた〜♪
スマン、思いつき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"
|