Вручную установить имя столбца в модели рельсов - PullRequest
8 голосов
/ 02 марта 2012

Я создаю приложение rails вокруг нескольких существующих баз данных, имена столбцов, используемые в существующих базах данных, совсем не работают с соглашениями об ассоциации rails. Есть ли способ установить псевдонимы имен столбцов в модели так же, как вы можете

class User < Activerecord::Base
self.set_table_name "users"
end

Могу ли я установить псевдонимы имен столбцов, если существующие столбцы БД не будут работать с соглашениями о присвоении имен по умолчанию для рельсов?

Ответы [ 2 ]

16 голосов
/ 02 марта 2012

В вашей модели просто установите псевдоним для атрибутов (столбцов). Например:

class User < Activerecord::Base
  alias_attribute :new_column_name, :real_column_name
end
2 голосов
/ 02 марта 2012

Если вы можете изменить столбец базы данных (т. Е. Только ваше приложение rails ссылается на него), вы можете написать миграцию, используя метод rename_column.Поскольку вы используете рельсы 3, вы можете просто использовать следующую команду

~: rails g migration RenameColumnNameToNewColumn columnName:columnType

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

 class ChangeOldColumnToNewColumn < ActiveRecord::Migration
      def up
          rename_column :tableName, :oldColumn, :newColumn
      end

      def down
          rename_column :tableName, :newColumn, :oldColumn
      end
 end

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

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