前言:我对Ruby/Rails很陌生
所以我的"邀请"表中有一列叫做"名称",我想将其重命名为"team_name"。我在迁移文件中更改了它,然后进行了回滚,然后重新运行了迁移。
class CreateInvitations < ActiveRecord::Migration
def change
create_table :invitations do |t|
t.string :token
t.string :team_name
t.integer :number_of_uses
t.timestamps null: false
end
end
end
这是我的架构现在的样子:
create_table "invitations", force: :cascade do |t|
t.string "token"
t.string "team_name"
t.integer "number_of_uses"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
然后我去把"name"的所有实例都更改为"team_name",但现在我遇到了各种各样的错误。例如
class Invitation < ActiveRecord::Base
has_and_belongs_to_many :users
validates :team_name, presence: true
有了规范,
describe '#team_name' do
it { should validate_presence_of :team_name }
end
而 rspec 故障,
5) Invitation#team_name should require team_name to be set
Failure/Error: it { should validate_presence_of :team_name }
NoMethodError:
undefined method `team_name=' for #<Invitation:0x007fd39a26def8>
# ./spec/models/invitation_spec.rb:7:in `block (3 levels) in <top (required)>'
我得到的几乎所有错误都和这个一模一样。我确保在我的工厂中也包括更改...我不确定这里到底发生了什么。当我更改列名称并进行另一个迁移时,我是否犯了错误?同样,我还在学习Rails。感谢您的帮助,谢谢。
测试环境使用自己的数据库架构。确保同时更新测试数据库:
bundle exec rake db:test:prepare
您可以更改迁移文件名,但必须执行几个步骤:
- RAKE DB:回滚到查询表回滚的点。
- 现在更改迁移文件的名称,以及内容。
- 更改可能使用该表的任何模型的名称。
- 耙子数据库:迁移