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



我有User和Post对象。用户有多个帖子,帖子属于一个用户。数据库适配器是sqlite3。我的挣扎是当我实例化第一个新帖子,保存它并将其用户分配给保存到数据库的用户实例时,一切都很好。但是,当我创建第二个post并将其用户分配给同一个user时,用户集合返回的数组中只有第一个post实例。当我检查数据库两个职位的user_id是相同的。只返回第一个帖子对我来说没有意义,而在数据库中有2个帖子具有相同的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.post "第一次SQL查询从数据库加载该用户的所有帖子。但是当你运行&;user。post &;第二次没有执行SQL查询(出于性能原因),所以只得到一个帖子。使用"user.posts.reload"重新加载post(将执行新的查询)

最新更新