2012-01-22 14 views
0

DataMapperを使用してUserオブジェクトの受信メッセージと送信メッセージにアクセスできるように、電子メールソリューションのスキーマを設計しようとしています。アソシエーションの「インボックス」と「送信」は、意図したことをしません。私は間違って何をしていますか?前もって感謝します!DataMapper association

私は(ビットを読み出すと、DMのウェブサイトからの友人の例をコピーした後)これまでに、以下まし

-

class User 
    include DataMapper::Resource 
    property :id, Serial 
    property :name, String, :required=>true 
    property :email, String, :required=>true, :unique=>true 
    property :password, String, :required=>true 

    has n, :messages, :child_key=>[:source_id, :target_id] 
    has n, :inbox, 'Message', :through=>:messages, :via=>:target 
    has n, :sent, 'Message', :through=>:messages, :via=>:source 
end 

class Message 
    include DataMapper::Resource 
    property :id, Serial 
    property :subject, String, :required=>true 
    property :body, String 

    belongs_to :source, 'User', :key=>true 
    belongs_to :target, 'User', :key=>true 
end 

答えて

1

私は自分の質問に答えるよ - それは誰か

を役に立てば幸い...

class User 
    ... 

    has n, :inbox, 'Message', :child_key=>[:target_id] 
    has n, :sent, 'Message', :child_key=>[:source_id] 
end 

すべてが、同じまま -

次の変更は、私が持ってきた問題を修正します