【发布时间】:2018-01-19 04:20:38
【问题描述】:
试图建立 has_many/belongs_to 关系。 一个用户有_许多脚本,一个脚本属于_一个用户。
播种脚本时,我收到此错误:
ActiveModel::UnknownAttributeError: 未知属性 'user_id' for 脚本。
我认为迁移中的这一行会为脚本创建一个 user_id 属性?
t.belongs_to :user, index: true, foreign_key: true
app/models/script.rb
class Script < ApplicationRecord
belongs_to :user
has_many :commits
has_many :script_users, through: :commits, source: :user
end
app/models/user.rb
class User < ActiveRecord::Base
has_many :scripts
has_many :used_scripts, through: :commits, source: :script
has_many :commits
end
db/migrate/20171231022826_create_scripts.rb
class CreateScripts < ActiveRecord::Migration[5.1]
def change
create_table :scripts do |t|
t.string :name
t.string :skill
t.string :bot_for
t.string :game_for
t.belongs_to :user, index: true, foreign_key: true
t.timestamps
end
end
end
db/seeds.rb
admin = User.create!(
email: 'a@a.com',
password: 'adminadmin',
password_confirmation: 'adminadmin'
)
script = Script.create!(
name: 'YWoodcutter',
skill: 'Woodcutting',
bot_for: 'Android',
game_for: "CandyLand,
user_id: admin.id
)
ActiveModel::UnknownAttributeError: 未知属性 'user_id' for 脚本。 我确保 rake:db reset 并且仍然出现错误。
谢谢
更新:
我做了一些事情,现在工作正常。我相信问题可能是我的用户迁移是在我的脚本迁移之后创建的。用户迁移应该在脚本之前完成,所以我更改了日期以更改它们迁移的顺序。rake rake db:rollback 和 db:reset 也是很好的衡量标准。
【问题讨论】:
-
提交表中有
user_id吗?
标签: ruby-on-rails activerecord ruby-on-rails-5