Как я могу изменить имя атрибута модели на ruby ​​на рельсах - PullRequest
0 голосов
/ 27 февраля 2019

Я хочу изменить имя ложной переменной на новое, поэтому я создал истинную и новую, но старая и ложная все еще остаются!

  • Как убрать ложное

    irb(main):001:0> item = Item.last Item Load (0.3ms) SELECT "items".* FROM "items" ORDER BY "items"."id" DESC LIMIT ? [["LIMIT", 1]] => #<Item id: 6, title: "Make a cake for your darling", description: "She loves furit ", created_at: "2019-02-27 18:04:15", updated_at: "2019-02-27 18:04:15", user_id: 2, complated_at: nil, completed_at: nil> irb(main):002:0>

Я допустил опечатку, она должна быть "завершена"

Что я могу сделать?

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019
rails g migration remove_complated_at_from_items complated_at:datetime

эта строка генерирует эти коды

class RemoveComplatedAtFromItems < ActiveRecord::Migration[5.2]
  def change
    remove_column :items, :complated_at, :datetime
  end
end

мой текущий файл schema.rb

ActiveRecord::Schema.define(version: 2019_02_27_204841) do
  create_table "items", force: :cascade do |t|
    t.string "title"
    t.text "description"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "user_id"
    t.datetime "completed_at"
    t.datetime "complated_at"
  end

теперь давайте запустим rails db: migrate

$ rails db:migrate

== 20190227204841 RemoveComplatedAtFromItems: migrating =======================
-- remove_column(:items, :complated_at, :datetime)
   -> 0.0038s
== 20190227204841 RemoveComplatedAtFromItems: migrated (0.0039s) ==============

Кажется, все в порядке!давайте проверим это schema.rb!

ActiveRecord::Schema.define(version: 2019_02_27_204841) do
  create_table "items", force: :cascade do |t|
    t.string "title"
    t.text "description"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "user_id"
    t.datetime "completed_at"
  end

Сейчас все хорошо.Последний слева позволяет проверить один объект!

 rails c
irb(main):001:0> item = Item.last
  Item Load (0.3ms)  SELECT  "items".* FROM "items" ORDER BY "items"."id" DESC LIMIT ?  [["LIMIT", 1]]
=> #<Item id: 6, title: "Make a cake for your darling", description: "She loves furit ", created_at: "2019-02-27 18:04:15", updated_at: "2019-02-27 18:04:15", user_id: 2, completed_at: nil>

СДЕЛАНО!

0 голосов
/ 28 февраля 2019

Не удалять столбец.Просто переименуйте его.

Создайте новую миграцию и введите код:

rename_column :items, :complated_at, :completed_at

0 голосов
/ 27 февраля 2019

Создайте миграцию и используйте метод remove_column для изменения вашей базы данных.

https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-remove_column

...