播种数据库时出现未知属性错误

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