2016-06-27 3 views
2

Я создаю приложение, в котором у меня есть пользователь модели. В первой версии приложения не будет столбца мобильного номера для пользователей в более поздней версии, он должен присутствовать, есть ли какие-либо способ добавления версий к моделям, так что проверка активной записи может быть записана в определенную версию.Версии API для активных моделей

ответ

1

Храните старых пользователей в неприкосновенности и подклассе новых пользователей. Поскольку ActiveRecord поддерживает Single Table Inheritance, база данных будет иметь новый столбец с именем type, чтобы отличать старых пользователей. И ваша проверка будет только на новых пользователей.

Сохранение их в качестве разных классов отражает вашу бизнес-модель, что у старых пользователей нет номера мобильного телефона.

+0

Это может быть одно из решений, но я ожидаю, что есть способ добавления версий для активных моделей для упоминания проверки, а не добавления столбца в таблицу, например, с 'validates_presense_of: mobile_number' только для вторая версия. –

+0

Если одна * версия * ведет себя иначе, чем другая, вы либо ставите условия в свой код ('if' или [' case'] (http://ruby-doc.com/docs/ProgrammingRuby/html/tut_expressions.html# S5)) или вы используете методы наследования и полиморфные выражения для выражения различий. Поскольку все новые пользователи могут использоваться всякий раз, когда код ожидает старого пользователя, я считаю, что новые пользователи ** являются ** старыми пользователями по принципу подписи [Лисков] (https://en.wikipedia.org/wiki/Liskov_substitution_principle). – wigy