Вы можете сделать это с помощью выражения Java 8 lambda:
LinkedList<String> list=new LinkedList<String>();
list.add("bgh");
list.add("asd");
list.add("new");
//lambda expression
list.sort((a,b)->a.compareTo(b));
rename_column :table, :old_column, :new_column
Обновление:
Вероятно, вы захотите создать для этого отдельную миграцию. (Переименуйте FixColumnName, как вы сделаете это)
script/generate migration FixColumnName
# creates db/migrate/xxxxxxxxxx_fix_column_name.rb
Затем отредактируйте миграцию, чтобы выполнить ваше желание.
# db/migrate/xxxxxxxxxx_fix_column_name.rb
class FixColumnName < ActiveRecord::Migration
def self.up
rename_column :table_name, :old_column, :new_column
end
def self.down
# rename back if you need or do something else or do nothing
end
end
Обновление для Rails 3.1
В то время как вверх
и вниз
методы все еще применимы. В рельсах 3.1 используется метод change
, который "знает, как перенести базу данных и обратить ее вспять при откате без необходимости записывать отдельный метод"
rails g migration FixColumnName
class FixColumnName < ActiveRecord::Migration
def change
rename_column :table_name, :old_column, :new_column
end
end
Если у вас случайно есть целая куча столбцов для переименования, или что-то, что потребовало бы повторения имени таблицы снова и снова.
rename_column :table_name, :old_column1, :new_column1
rename_column :table_name, :old_column2, :new_column2
...
Вы можете использовать change_table
для того, чтобы все было немного аккуратно.
class FixColumnNames < ActiveRecord::Migration
def change
change_table :table_name do |t|
t.rename :old_column1, :new_column1
t.rename :old_column2, :new_column2
...
end
end
end
Спасибо, Люк
&& Турадг
, за то, что подняли эту тему.
Затем просто db:migrate
, как обычно, или как бы вы ни занимались своими делами.
Обновление для Rails 4
При создании Migration
для переименования колонки, Rails 4 генерирует метод change
вместо up
и down
, как упоминалось в вышеуказанном ответе. Сгенерированное изменение как показано ниже :
$ > rails g migration ChangeColumnName
, который создаст файл миграции, похожий на этот :
class ChangeColumnName < ActiveRecord::Migration
def change
rename_column :table_name, :old_column, :new_column
end
end
http://api.rubyonrails.org/classes/ActiveRecord/Migration.html
В разделе Available Transformations
rename_column(table_name, column_name, new_column_name):
Переименовывает столбец, но сохраняет его тип и содержание.
ИМО, в этом случае лучше использовать грабли db:rollback
. Затем отредактируйте свой переход и снова наберите rake db:migrate
. Однако, если у вас есть данные в колонке, которые вы не хотите потерять, то используйте rename_column
.