Ruby on rails 缓存where子句中的关联

Ruby on rails 缓存where子句中的关联,ruby-on-rails,Ruby On Rails,让我举一个例子: 我有两种型号: class User < ActiveRecord::Base has_many :posts end class Post < ActiveRecord::Base belongs_to :user scope :created_in, ->(start_date, end_date) { where(created_at: start_date..end_date) } end 是否有可能缓存where子句中的帖子?所以在

让我举一个例子:

我有两种型号:

class User < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :user

  scope :created_in, ->(start_date, end_date) { where(created_at: start_date..end_date) }
end
是否有可能缓存where子句中的帖子?所以在我这么做之后

users.first.posts

它将准确地显示那些符合条件的帖子,而不会产生任何额外的查询。

不,我认为这是不可能的。根据上下文的不同,您可以做的是创建一个可记忆/缓存的查找表。差不多

User.all.each do|User|
posts=按用户发布的posts\u\u id[user.id]
结束
def按用户id发布
@_posts_by_user_id | |=posts.group_by(&:user_id)
结束
def岗位
已在中创建帖子(开始日期、结束日期)
结束
尝试使用
eager\u load(:posts)
例如
User.joins(:posts)。eager\u load(:posts)。merge(Post.created\u in(start\u date,end\u date))
这将为用户急切加载关联的
Post
对象并执行单个查询。
users.first.posts