Ruby-on-rails-seed.rb:'&引用;命名错误:未定义的方法'each';至于;

Ruby-on-rails-seed.rb:'&引用;命名错误:未定义的方法'each';至于;,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是RoR的新手,如果我不能清楚地表达自己,我很抱歉。对于因张贴代码而非图片而造成的不便,我深表歉意(qwq没有足够的声誉) 我的数据库的模式如下所示 ActiveRecord::Schema.define(version: 20200323173103) do create_table "posts", force: :cascade do |t| t.string "title" t.text "content" t.datetime "create

我是RoR的新手,如果我不能清楚地表达自己,我很抱歉。对于因张贴代码而非图片而造成的不便,我深表歉意(qwq没有足够的声誉) 我的数据库的模式如下所示

ActiveRecord::Schema.define(version: 20200323173103) do

  create_table "posts", force: :cascade do |t|
    t.string   "title"
    t.text     "content"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer  "uid"
    t.integer  "student_id"
  end

  add_index "posts", ["student_id"], name: "index_posts_on_student_id"


  create_table "users", force: :cascade do |t|
    t.string   "name"
    t.integer  "year"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer  "uid"
    t.integer  "student_id"
  end
  add_index "users", ["student_id"], name: "index_users_on_student_id"


  create_table "students", force: :cascade do |t|
    t.string   "name"
    t.string   "password_digest"
    t.datetime "created_at",      null: false
    t.datetime "updated_at",      null: false
  end

end


和我的seed.rb文件:

Student.destroy_all
Post.destroy_all
User.destroy_all

Post.create!([
  { title: "hello world", content: "first web app." },
  { title: "Severus Snape", content: "Always." },
  { title: "Albus Dumbledore", content: "'I am not worried, Harry,' said Dumbledore, his voice a little stronger despite the freezing water.' I am with you.'" },
  { title: "Albus Dumbledore", content: "“But you know, happiness can be found even in the darkest of times, if one only remembers to turn on the light." },
  { title: "Hermione Granger", content: "'I hope you are pleased with yourselves. We could all have been killed — or worse, expelled. Now if you don't mind, I'm going to bed.'" },
  { title: "Albus Dumbledore", content: "It does not do well to dwell on dreams and forget to live." },
  { title: "Ron Weasley", content: "You're a little scary sometimes, you know that? Brilliant ... but scary." },
  { title: "Rubeus Hagrid", content: "Yer a wizard Harry." },
  { title: "Dobby", content: "Dobby is free." },
  { title: "Gilderoy Lockhart", content: "Fame is a fickle friend, Harry. Celebrity is as celebrity does. Remember that." },
  { title: "Harry Potter", content: "I solemnly swear I am up to no good." }
])

users = User.create!([
    { uid:1, name: "zyj",year: 2000 },
    { uid:2, name: "jz zhou",year: 1995 },
    { uid:3, name: "mitty",year: 2002 },
    { uid:4, name: "stela",year: 1985 },
    { uid:5, name: "someone",year: 1993 },
    { uid:6, name: "you know who",year: 1863}

])

students = Student.create! ([
  { name: "Joe", password: "abc123" },
  { name: "Jim", password: "123abc" },
  { name: "zyj", password: "0303267337" },
  { name: "Joseph", password: "123456" }
])

Post.all.each do |p|
  p.uid = users.sample.uid
  p.save!
end

User.all.each do |u|
  @sid = students.sample.id
  u.student_id = @sid
  Post.find_by(uid: u.uid).each do |po|
        po.student_id = @sid
        po.save!
  end
  u.save!
end
当我运行“rake db:seed”时,它会抛出下面的错误消息:

jhzhengtekiMacBook-Air:my_博客severina$rake-db:seed
雷克流产了!
NoMethodError:未定义的方法“each”#
/Users/severina/Desktop/my_blog/db/seeds.rb:52:in'block in'
/Users/severina/Desktop/my_blog/db/seeds.rb:49:in`'
任务:TOP=>db:seed
(通过使用--trace运行任务查看完整跟踪)
那么49号线和52号线发生了什么? 谢谢你的帮助

返回一个对象(或
nil
),您试图对其使用
每个
进行迭代,该对象应可用于枚举

您可以将块更改为

po=Post.find_by(uid:u.uid)
po.student_id=@sid
阿宝,救命!
如果您想处理单个对象,但是如果您想通过该uid更改所有帖子,则应使用
where

Post.where(uid:u.uid)。每个do|po|
po.student_id=@sid
阿宝,救命!
结束
返回一个对象(或
nil
),您试图对该对象使用
每个
进行迭代,该对象应可用于枚举

您可以将块更改为

po=Post.find_by(uid:u.uid)
po.student_id=@sid
阿宝,救命!
如果您想处理单个对象,但是如果您想通过该uid更改所有帖子,则应使用
where

Post.where(uid:u.uid)。每个do|po|
po.student_id=@sid
阿宝,救命!
结束

您发布的是代码而不是图像,这很好,所以这一切都很完美!你发布代码而不是图片,这很好,所以这一切都很完美!
jhzhengtekiMacBook-Air:my_blog severina$ rake db:seed
rake aborted!
NoMethodError: undefined method `each' for #<Post:0x00007fe59cdd8bd0>
/Users/severina/Desktop/my_blog/db/seeds.rb:52:in `block in <top (required)>'
/Users/severina/Desktop/my_blog/db/seeds.rb:49:in `<top (required)>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)