我有联盟的架构
create_table "leagues", force: :cascade do |t|
t.string "name", null: false
t.date "start_date", null: false
t.date "end_date"
t.string "day"
t.string "start_time", null: false
t.integer "practice_length", null: false
t.integer "alley_id", null: false
t.integer "frequency", null: false
t.integer "scratch", default: 220
t.integer "handicap_percent", default: 80
t.integer "handicap_round", default: 0
t.integer "occurrences", null: false
t.integer "user_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
和模型
class Alley < ActiveRecord::Base
belongs_to :address
has_many :leagues
end
class User < ActiveRecord::Base
has_many :leagues
end
class League < ActiveRecord::Base
belongs_to :alley
belongs_to :user
has_many :teams
end
和工厂
factory :league do
name Faker::Company.name
start_date start_date
end_date end_date
day Date.today.day
start_time '7:00pm'
practice_length 10
frequency 1
occurrences weeks
association :alley, factory: :alley
association :user, factory: :user
end
factory :user do
email 'test@example.com'
password 'Test1234'
password_confirmation { 'Test1234' }
end
factory :alley do
name Faker::Company.name
association :address, factory: :address
end
当我尝试创建联盟时,我收到错误
::加载ActiveModel MissingAttributeError: 无法写出未知属性
user_id
它的设置与胡同完全一样,胡同也起作用。联盟应该被分配到一个小巷并分配给用户。一条小巷可以有很多联赛,用户可以有很多联赛。坦率地说,我太累了,无法弄清楚为什么现在还没有工作。
答案 0 :(得分:2)
我一直在修改迁移(因为我正在获取初始数据集),我向下迁移,然后向上迁移。那是什么让我在哪里。我不得不删除数据库,然后运行安装程序。事情一定是陈旧的。
答案 1 :(得分:0)
就我而言,我的测试失败了。感谢@TIMBERings的答案,我得以缩小范围。
如果您创建的迁移没有索引,请向前迁移,然后添加 迁移文件的索引(或引用),迁移或回滚, 再次向前迁移,你就搞砸了
要修复失败的RSpec测试,我运行了以下内容,然后重新运行测试,结果通过了。
rails db:reset RAILS_ENV=test
您也可以简单地运行
rails db:reset