Ассоциация DataMapper - PullRequest
       6

Ассоциация DataMapper

0 голосов
/ 22 января 2012

Я пытаюсь спроектировать схему для почтового решения, чтобы я мог получить доступ к входящим и отправленным сообщениям на объекте User, используя DataMapper.Ассоциации «Входящие» и «Отправленные» не выполняют то, что предполагалось.Что я делаю неправильно?Заранее спасибо!

Пока у меня есть следующее (после небольшого прочтения и копирования примера с друзьями с сайта 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 Ответ

1 голос
/ 22 января 2012

Я отвечаю на свой вопрос - надеюсь, это кому-нибудь поможет

Следующее изменение устраняет проблему, с которой я столкнулся -

class User
    ...

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

Все остальное остается прежним ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...