Является ли полиморфный лучшим выбором? - PullRequest
0 голосов
/ 17 января 2011

Эй, ребята, я создаю браузерную игру, в которой происходят битвы между монстрами и пользователями (PvP).Модель Monster имеет все функции, которые относятся к битве с монстрами.Я сейчас создаю систему PvP, и система сражений такая же, как в Monsters.Итак, я думал о создании какого-то абстрактного представления о битве, возможно, о боевой модели (?) И создании полиморфной ассоциации.

Как вы думаете, это стратегия, которой я должен следовать, или я мог бысделать это лучше?

Ответы [ 2 ]

1 голос
/ 17 января 2011

Я бы сказал, что вы должны создать класс или модуль Combatant, от которого вы можете наследовать или включать в классы Person и Monster, но вы не должны сохранять полиморфную ассоциацию в базе данных. Вы должны использовать только две таблицы: люди и монстры.

module Combatant
...
end

class Person < ActiveRecord::Base
  include Combatant
  ...
end

class Monster < ActiveRecord::Base
  include Combatant
  ...
end
0 голосов
/ 17 января 2011

Другим вариантом является Наследование одной таблицы

class Combatant < ActiveRecord::Base
  # Has all the fields we care about and basic damage rules, etc
end

class Person < Combatant
    # Any functions that only players can do
end

class Monster < Combatant
    # any functions that need to be overridden
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...