Я очень новый для DataMapper, и я пытаюсь создать модели для следующего сценария:один-к-одному DataMapper ассоциации
У меня есть несколько пользователей (с именем пользователя, пароль и т. д.), которые также могут быть игроками или судьями или обоими (поэтому одностраничное наследование не является вариантом). Основными моделями будут:
class User
include DataMapper::Resource
property :id, Serial
# Other user properties go here
end
class Player
include DataMapper::Resource
property :id, Serial
# Other player properties go here
# Some kind of association goes here
end
class Referee
include DataMapper::Resource
property :id, Serial
# Other referee properties go here
# Some kind of association goes here
end
DataMapper.finalize
Я не уверен, однако, какие ассоциации можно добавлять к Игроку и Рефери. С belongs_to :user
несколько игроков могут быть связаны с одним и тем же пользователем, что не имеет смысла в моем контексте. В терминах СУРБД я предполагаю, что я хочу, это уникальное ограничение на внешний ключ в таблицах «Игроки» и «Рефери».
Как это сделать в моей модели DataMapper? Нужно ли мне проверять себя на проверку?
Спасибо за ваш ответ. Тем не менее, эти модели позволяют мне создавать несколько игроков, которые связаны с одним и тем же пользователем. – mwittrock
@mwittrock Я вижу. Отредактировано для предотвращения этого. Теперь «подклассы» используют внешний ключ пользователя в качестве основного ключа. – AlexQueue
Это, кажется, правильная ассоциация «один-на-один-один» в DataMapper. Наслаждайтесь поддержкой репутации :-) – mwittrock