gpt4 book ai didi

ruby-on-rails - Mongoid::Errors::DocumentNotFound raise_not_found_error

转载 作者:数据小太阳 更新时间:2023-10-29 07:01:32 30 4
gpt4 key购买 nike

* 在底部更新 *

当寻找不存在的用户时,我得到:

Mongoid::Errors::DocumentNotFound in UsersController#show

Problem: Document(s) not found for class User with id(s) 22. Summary: When calling User.find with an id or array of ids, each parameter must match a document in the database or this error will be raised. The search was for the id(s): 22 ... (1 total) and the following ids were not found: 22. Resolution: Search for an id that is in the database or set the Mongoid.raise_not_found_error configuration option to false, which will cause a nil to be returned instead of raising this error when searching for a single id, or only the matched documents when searching for multiples.

但是我将 raise_not_found_error 设置为 false

mongoid.yml

development:
adapter: 'mongoid'
# Configure available database sessions. (required)
sessions:
# Defines the default session. (required)
default:
# Defines the name of the default database that Mongoid can connect to.
# (required).
database: blog_development
# Provides the hosts the default session can connect to. Must be an array
# of host:port pairs. (required)
hosts:
- localhost:27017
options:
allow_dynamic_fields: false
identity_map_enabled: true
include_root_in_json: true
include_type_for_serialization: true
# Note this can also be true if you want to preload everything, but this is
# almost never necessary. Most of the time set this to false.
preload_models:
- Canvas
- Browser
- Firefox
scope_overwrite_exception: true
raise_not_found_error: false
skip_version_check: false
use_activesupport_time_zone: false
use_utc: true
# Configure Mongoid specific options. (optional)
options:
# Enable the identity map, needed for eager loading. (default: false)
# identity_map_enabled: false

# Includes the root model name in json serialization. (default: false)
# include_root_in_json: false

# Include the _type field in serializaion. (default: false)
# include_type_for_serialization: false

# Preload all models in development, needed when models use
# inheritance. (default: false)
# preload_models: false

# Protect id and type from mass assignment. (default: true)
# protect_sensitive_fields: true

# Raise an error when performing a #find and the document is not found.
# (default: true)
raise_not_found_error: false

# Raise an error when defining a scope with the same name as an
# existing method. (default: false)
scope_overwrite_exception: false

# Skip the database version check, used when connecting to a db without
# admin access. (default: false)
# skip_version_check: false

# Use Active Support's time zone in conversions. (default: true)
# use_activesupport_time_zone: true

# Ensure all times are UTC in the app side. (default: false)
# use_utc: false
test:
sessions:
default:
database: blog_test
hosts:
- localhost:27017
options:
consistency: :strong
# In the test environment we lower the retries and retry interval to
# low amounts for fast failures.
max_retries: 1
retry_interval: 0

Controller

  # GET /users/1
# GET /users/1.json
def show

@user = User.find(params[:id])

render json: @user
end

* 更新 **通过这样做修复了空响应(不是 json 格式):

  def show

@user = User.find(params[:id])
if @user.nil?
@user = []
end

render json: @user
end

最佳答案

你的yml结构有误

必须是-

development:
sessions:
options:
#raise_not_found_error has to be not here but see below
options: #strictly 2 spaces before
raise_not_found_error: false #strictly 4 spaces before not 6

因此,raise_not_found_error 参数必须是 development>options 的子参数,而不是 development>sessions>options

关于ruby-on-rails - Mongoid::Errors::DocumentNotFound raise_not_found_error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18638745/

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