播种数据库时出现未知属性错误
Getting an Unknown Attribute error when seeding database
当我为我的数据库做种时,我得到这个错误: Post 的未知属性 'user'。
我的架构如下所示:
create_table "posts", force: :cascade do |t|
t.string "body"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id"
t.integer "collection_id"
t.index ["collection_id"], name: "index_posts_on_collection_id"
t.index ["user_id"], name: "index_posts_on_user_id"
end
我的 seeds.rb 文件如下所示:
require 'faker'
10.times do |user|
User.create!(
name: Faker::Name.name,
birthday: '2019-09-04',
skin_type: 'Dry',
email: Faker::Internet.email,
password:Faker::Internet.password
)
end
users = User.all
puts "Users seeded"
50.times do
Post.create!(
user: users.sample,
body: Faker::Lorem.paragraphs
)
end
我创建的 Post 迁移文件如下所示:
class CreatePosts < ActiveRecord::Migration[5.2]
def change
create_table :posts do |t|
t.string :body
t.timestamps
end
end
end
在我的 seeds.rb 文件中,Post.create!无法访问用户属性。是因为CreatePosts迁移文件中没有包含用户属性吗?这不应该无关紧要,因为在架构中,posts 和 user_id 是相关联的吗?
根据您对评论的讨论,您需要在post模型中添加用户关联:
class Post < ApplicationRecord
belongs_to :user
end
当我为我的数据库做种时,我得到这个错误: Post 的未知属性 'user'。
我的架构如下所示:
create_table "posts", force: :cascade do |t|
t.string "body"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id"
t.integer "collection_id"
t.index ["collection_id"], name: "index_posts_on_collection_id"
t.index ["user_id"], name: "index_posts_on_user_id"
end
我的 seeds.rb 文件如下所示:
require 'faker'
10.times do |user|
User.create!(
name: Faker::Name.name,
birthday: '2019-09-04',
skin_type: 'Dry',
email: Faker::Internet.email,
password:Faker::Internet.password
)
end
users = User.all
puts "Users seeded"
50.times do
Post.create!(
user: users.sample,
body: Faker::Lorem.paragraphs
)
end
我创建的 Post 迁移文件如下所示:
class CreatePosts < ActiveRecord::Migration[5.2]
def change
create_table :posts do |t|
t.string :body
t.timestamps
end
end
end
在我的 seeds.rb 文件中,Post.create!无法访问用户属性。是因为CreatePosts迁移文件中没有包含用户属性吗?这不应该无关紧要,因为在架构中,posts 和 user_id 是相关联的吗?
根据您对评论的讨论,您需要在post模型中添加用户关联:
class Post < ApplicationRecord
belongs_to :user
end