ActiveRecord #collection 方法不返回所有保存的集合

ActiveRecord #collection method is not returning all collection that is saved

我有用户和 Post 对象。用户有很多 post 并且 Post 属于一个用户。数据库适配器是sqlite3。我的挣扎是当我实例化第一个新 Post、保存它并将其用户分配给也保存到数据库的用户实例时,一切正常。但是,当我创建第二个 post 并将其用户分配给同一个用户时,用户集合返回的数组中只有第一个 post 实例。当我检查数据库时,post 的 user_id 是相同的。只返回第一个 post 对我来说没有意义,而数据库中有 2 个 post 具有相同的 user_id。这是代码。 (我知道 user1.posts.create(text: "new post") 会做我想做的事,但我想知道#collection 有什么问题)

#user.rb
class User < ActiveRecord::Base
    has_many :posts
end

#post.rb
class Post < ActiveRecord::Base
    belongs_to :user
end

#schema.rb
  create_table "posts", force: :cascade do |t|
    t.string "text"
    t.integer "user_id"
  end

  create_table "users", force: :cascade do |t|
    t.string "name"
  end

当您 运行 “user.posts” 第一次 sql 查询从数据库加载该用户的所有 post 时。但是当你 运行 “user.posts” 第二次没有执行 sql 查询时(出于性能原因)所以你只得到一个 post。使用“user.posts.reload”重新加载posts(将执行新查询)