Rails и префиксы столбцов базы данных? - PullRequest
0 голосов
/ 04 октября 2011

Я работаю над большим веб-приложением, и наша схема базы данных такова, что большинство столбцов таблицы (столбцы идентификаторов являются одним большим исключением) имеют префикс с сокращением имени таблицы.

Мы бы хотели перенести приложение на Rails, но, похоже, что в соответствии с практиками Rails имена столбцов не должны иметь префикс таким образом.

Можно ли использовать рельсы с префиксами имен столбцов? Я знаю, что префиксы имен таблиц поддерживаются, но я ничего не видел в именах столбцов.

Есть ли у экспертов по Rails какие-нибудь мысли?

1 Ответ

2 голосов
/ 04 октября 2011

Ну, я не вижу никаких проблем с префиксными столбцами (за исключением, что это немного скучно в использовании).

В любом случае, скажем, у вас есть модель User с u_name для name и т. Д...

Было бы здорово сделать: User.first.name

вместо: User.first.u_name

Чтобы достичь этого, я предлагаю эту непроверенную метапрограммирование, которое вы должны поставитьв инициализаторе.

class ActiveRecord::Base
  def self.pretty_columns(prefix)
    skipped_columns = ["id"]       #add whatever column name you want here  
    columns.each do |column|
      column_name = column.name
      unless skipped_columns.include? column_name
        unprefixed_col = (column_name.scan /^#{prefix}(.*)/).flatten.first 

        define_method "#{unprefixed_col}" do
          self.send "#{column_name}"
        end

        define_method "#{unprefixed_col}=" do |value|
          self.send(column_name, value)
        end         
      end
    end
  end
end

Затем в вашей пользовательской модели:

class User < ActiveRecord::Base
  pretty_columns :u_
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...