DataMapper关联

时间:2012-01-22 03:31:24

标签: datamapper

我正在尝试为电子邮件解决方案设计架构,以便我可以使用DataMapper访问User对象上的传入和发送消息。 “收件箱”和“已发送”的关联不符合预期。我究竟做错了什么?提前谢谢!

到目前为止,我有以下内容(在阅读了一些内容并从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 个答案:

答案 0 :(得分:1)

我正在回答我自己的问题 - 希望它有助于某人

以下更改解决了我一直遇到的问题 -

class User
    ...

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

其他一切,都是一样的......