Абстрагирование атрибутов ActiveRecord - PullRequest
1 голос
/ 06 мая 2011

Как лучше всего абстрагировать атрибут ActiveRecord без дальнейшей нормализации базы данных?

Например, предположим, что таблица базы данных с именем addresses содержит столбец zip_code и метод определения допустимости почтового индекса:

class Address < ActiveRecord::Base
  def zip_code_valid?
    ..
  end
end

Я бы предпочел иметь:

class Address < ActiveRecord::Base
  ..
end

class ZipCode
  def valid?
    ..
  end
end

и когда я выполняю Address.find(1).zip_code, он возвращает ZipCode против строки. Я бы предпочел не нормализовать базу данных, создав таблицу с именем zip_codes. Пример является гипотетическим, и у меня в настоящее время нет реального примера этого; Я просто хочу знать, как я могу это сделать.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 06 мая 2011

Я не уверен, почему вы хотите сделать это для ZipCode, как вы обсуждали, но чтобы ответить на ваш вопрос, вы должны рассмотреть возможность использования Rails Aggregations.

http://api.rubyonrails.org/classes/ActiveRecord/Aggregations/ClassMethods.html

Если у вас есть конкретные вопросы о том, чего вы хотите достичь, сообщите мне, и я могу попытаться ответить на эти конкретные вопросы.

0 голосов
/ 06 мая 2011

Я не думаю, что абстрагирование почтового индекса в класс имеет смысл, если вы не собираетесь делать то же самое с улицей, номером дома, городом и т. Д. У вас уже есть отдельный столбец в адресе.таблицу, поэтому не имеет смысла хранить ее в своем собственном классе (с точки зрения ActiveRecord).Или, если вы храните почтовые индексы в своей таблице (и, следовательно, в классе), что вы получаете?По моему мнению, слишком далеко, чтобы хранить один атрибут в отдельном классе / таблице, если это имеет смысл быть частью совокупности, в которой он находится в настоящее время.

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