gpt4 book ai didi

ruby-on-rails - Rails ActiveRecord 找到 id 数组,但有些找不到

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

我正在尝试通过这样的 id 数组查找模型:

Model.find [1,2,3]

但是假设这些模型中只有两个存在(id 为 2 的模型已被删除):

#<Model id: 1>
#<Model id: 3>

我收到这样的错误:

#<ActiveRecord::RecordNotFound: Couldn't find all Models with 'id': (1, 2, 3) (found 2 results, but was looking for 3).>

是否可以捕获此错误并确定哪些模型不存在?

说我在我的 Controller 中:

def index
@models = Model.find params.require(:model_ids)
rescue ActiveRecord::RecordNotFound => e
e.full_message
???
end

我想在 ??? 行中对异常 e 运行一些代码,该异常将返回 2,让我知道哪些模型没有找到,所以我可以在没有它的情况下重新运行查询,同时注意哪些模型没有找到。

最佳答案

错误的方法。当您希望代码引发 ActiveRecord::RecordNotFound 时,应该使用 .find 来查找特定记录。这样做是为了确保记录存在并避免出现 nil 错误。通常这用于触发 404 响应而不重复相同的样板:

def show
@record = Record.find_by(id: params[:id])
unless @record
render file: 'public/404.html', status: :not_found
end
end

如果您不希望代码出现,请使用 .find_by(id: id)

要获取多条记录,请使用 where:

models = Model.where(id: [1,2,3])

如果您想确定其中哪些 ID 不存在,请使用数组差异:

bad_ids = [1,2,3] - models.ids

关于ruby-on-rails - Rails ActiveRecord 找到 id 数组,但有些找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61328403/

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