gpt4 book ai didi

ruby-on-rails - Ruby on Rails : How to set up "find" options in order to not use cache

转载 作者:行者123 更新时间:2023-12-03 23:23:52 26 4
gpt4 key购买 nike

在 Ruby on Rails 中,您可以使用以下语法从数据库中查找记录:

<model_name>.find_by_<field_name>()

示例: User.find_by_email('test@test.test') , User.find_by_id(1) , ...

前一段时间,如果我没记错的话,我在某处读到您可以显式禁用“查找”操作的缓存,但我不记得是怎么做的。

有人能帮我记住吗?

最佳答案

您可以使用 ActiveRecord::QueryCache.uncached像这样:

User.find_by_email('test@test.test')
User.find_by_email('test@test.test') # Will return cached result

User.uncached do
User.find_by_email('test@test.test')
User.find_by_email('test@test.test') # Will query the database again
end

在 Controller 中,它看起来像这样:
def show # users#index action
User.uncached do
@user = User.find_by_email('test@test.test')
@another_user = User.find_by_email('test@test.test') # Will query database
end

User.find_by_email('test@test.test') # Will *not* query database, as we're outside of the Users.uncached block
end

显然,在模型中,您只需要执行以下操作:
class User < ActiveRecord::Base
def self.do_something
uncached do
self.find_by_email('test@test.test')
self.find_by_email('test@test.test') # Will query database
end
end
end

User.do_something # Will run both queries

关于ruby-on-rails - Ruby on Rails : How to set up "find" options in order to not use cache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4636390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com