- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
从昨天开始,我的生产应用程序开始在我整个应用程序的某些查询中引发 ActiveRecord::ImmutableRelation
!
我无法想象如何给出每个错误的确切上下文,因为这个错误发生在我的应用程序的随机位置!我无法在 Rails 控制台中模拟此错误,只能在生产环境中的 Controller 中调用相同的代码块。
我们不更改任何查询,我开始认为这可能是数据库配置中的错误或某些更改(?)。有人已经得到这个错误了吗?知道我可以搜索什么吗?
回溯(一个错误):
ActiveRecord::ImmutableRelation: ActiveRecord::ImmutableRelation
from active_record/relation/query_methods.rb:923:in `assert_mutability!'
from active_record/relation/query_methods.rb:915:in `set_value'
from active_record/relation/query_methods.rb:74:in `references_values='
from active_record/relation/query_methods.rb:176:in `references!'
from active_record/relation/merger.rb:76:in `block in merge'
from active_record/relation/merger.rb:66:in `each'
from active_record/relation/merger.rb:66:in `merge'
from active_record/relation/spawn_methods.rb:45:in `merge!'
from octopus/relation_proxy.rb:49:in `public_send'
from octopus/relation_proxy.rb:49:in `block in method_missing'
from octopus/proxy.rb:86:in `block (2 levels) in run_queries_on_shard'
from octopus/proxy.rb:345:in `using_shard'
from octopus/proxy.rb:85:in `block in run_queries_on_shard'
from octopus/proxy.rb:329:in `keeping_connection_proxy'
from octopus/proxy.rb:84:in `run_queries_on_shard'
from octopus/shard_tracking.rb:31:in `run_on_shard'
from octopus/relation_proxy.rb:45:in `method_missing'
from active_record/associations/association.rb:79:in `scope'
from active_record/associations/collection_association.rb:288:in `scope'
from active_record/associations/collection_proxy.rb:960:in `scope'
from active_record/associations/collection_proxy.rb:1130:in `order'
from octopus/relation_proxy.rb:49:in `public_send'
from octopus/relation_proxy.rb:49:in `block in method_missing'
from octopus/proxy.rb:86:in `block (2 levels) in run_queries_on_shard'
from octopus/proxy.rb:345:in `using_shard'
from octopus/proxy.rb:85:in `block in run_queries_on_shard'
from octopus/proxy.rb:329:in `keeping_connection_proxy'
from octopus/proxy.rb:84:in `run_queries_on_shard'
from octopus/shard_tracking.rb:31:in `run_on_shard'
from octopus/relation_proxy.rb:45:in `method_missing'
from app/controllers/v2/app/details_controller.rb:9:in `show'
from action_controller/metal/basic_implicit_render.rb:6:in `send_action'
from abstract_controller/base.rb:194:in `process_action'
from scout_apm/instruments/action_controller_rails_3_rails4.rb:72:in `process_action'
from action_controller/metal/rendering.rb:30:in `process_action'
from abstract_controller/callbacks.rb:42:in `block in process_action'
from active_support/callbacks.rb:109:in `block in run_callbacks'
from raven/integrations/rails/controller_transaction.rb:7:in `block in included'
from active_support/callbacks.rb:118:in `instance_exec'
from active_support/callbacks.rb:118:in `block in run_callbacks'
from active_support/callbacks.rb:136:in `run_callbacks'
from abstract_controller/callbacks.rb:41:in `process_action'
from action_controller/metal/rescue.rb:22:in `process_action'
from action_controller/metal/instrumentation.rb:34:in `block in process_action'
from active_support/notifications.rb:168:in `block in instrument'
from active_support/notifications/instrumenter.rb:23:in `instrument'
from active_support/notifications.rb:168:in `instrument'
from action_controller/metal/instrumentation.rb:32:in `process_action'
from action_controller/metal/params_wrapper.rb:256:in `process_action'
from active_record/railties/controller_runtime.rb:24:in `process_action'
from scout_apm/instruments/action_controller_rails_3_rails4.rb:94:in `process_action'
from abstract_controller/base.rb:134:in `process'
from action_controller/metal.rb:191:in `dispatch'
from action_controller/metal.rb:252:in `dispatch'
from action_dispatch/routing/route_set.rb:52:in `dispatch'
from action_dispatch/routing/route_set.rb:34:in `serve'
from action_dispatch/journey/router.rb:52:in `block in serve'
from action_dispatch/journey/router.rb:35:in `each'
from action_dispatch/journey/router.rb:35:in `serve'
from action_dispatch/routing/route_set.rb:840:in `call'
from scout_apm/instruments/rails_router.rb:29:in `call_with_scout_instruments'
from rails_api_utils/middleware/context_collect.rb:18:in `call'
from rails_api_utils/middleware/localization.rb:29:in `block (2 levels) in call'
from active_support/core_ext/time/zones.rb:66:in `use_zone'
from rails_api_utils/middleware/localization.rb:39:in `in_timezone'
from rails_api_utils/middleware/localization.rb:28:in `block in call'
from i18n.rb:297:in `with_locale'
from rails_api_utils/middleware/localization.rb:43:in `with_locale'
from rails_api_utils/middleware/localization.rb:27:in `call'
from rack/request_id.rb:30:in `block in call'
from request_id.rb:60:in `with'
from rack/request_id.rb:29:in `call'
from scout_apm/middleware.rb:17:in `call'
from request_store/middleware.rb:9:in `call'
from rack/etag.rb:25:in `call'
from rack/conditional_get.rb:25:in `call'
from rack/head.rb:12:in `call'
from action_dispatch/middleware/callbacks.rb:28:in `block in call'
from active_support/callbacks.rb:98:in `run_callbacks'
from action_dispatch/middleware/callbacks.rb:26:in `call'
from enterprise/trace_id/middlewares/rack_middleware.rb:21:in `block in call'
from enterprise/trace_id/tracer/tracer.rb:13:in `block in trace'
from <internal:prelude>:137:in `__enable'
from <internal:prelude>:137:in `enable'
from enterprise/trace_id/tracer/tracer.rb:13:in `trace'
from enterprise/trace_id/middlewares/rack_middleware.rb:21:in `call'
from action_dispatch/middleware/debug_exceptions.rb:61:in `call'
from action_dispatch/middleware/show_exceptions.rb:33:in `call'
from rails/rack/logger.rb:38:in `call_app'
from rails/rack/logger.rb:26:in `block in call'
from active_support/tagged_logging.rb:71:in `block in tagged'
from active_support/tagged_logging.rb:28:in `tagged'
from active_support/tagged_logging.rb:71:in `tagged'
from rails/rack/logger.rb:26:in `call'
from action_dispatch/middleware/remote_ip.rb:81:in `call'
from request_store/middleware.rb:9:in `call'
from action_dispatch/middleware/request_id.rb:27:in `call'
from rack/runtime.rb:22:in `call'
from active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
from action_dispatch/middleware/executor.rb:14:in `call'
from rack/sendfile.rb:111:in `call'
from raven/integrations/rack.rb:51:in `call'
from scout_apm/instruments/middleware_summary.rb:58:in `call'
from rails/engine.rb:524:in `call'
from puma/configuration.rb:225:in `call'
from puma/server.rb:658:in `handle_request'
from puma/server.rb:472:in `process_client'
from puma/server.rb:332:in `block in run'
from puma/thread_pool.rb:133:in `block in spawn_thread'
详细 Controller 代码(我省略了一些企业模型名称):
# frozen_string_literal: true
class DetailsController < V2::ApplicationController
def show
model = Model.find(params[:pricing_id])
details = model.details.order(:position)
details.each { |detail| detail.model = model }
Detail.cascade_formula_arguments(details, params)
details = details.select(&:available?)
render json: details, each_serializer: ::V2::DetailSerializer
end
end
最佳答案
除非您希望修改数据,否则我建议将其映射到哈希数组...但不确定 Detail.cascade_formula_arguments(details, params)
正在做什么,所以这是一个猜测。
我会尝试将数据转换为散列而不是事件记录对象,除非你真的想修改它们,就像这样:
details.each { |detail| detail.model = model }
details = details.map(&:as_json)
根据@engineersmnky 的评论和我自己的想法,这行代码可能是您的问题所在,您能删除这行代码吗?它的目的是什么?看看是否可以删除它。
# try to remove this from your code
details.each { |detail| detail.model = model }
关于ruby-on-rails - 我的 Rails 应用程序开始在一些随机查询中引发 ActiveRecord::ImmutableRelation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56281365/
以下是一个非常简单的ruby服务器。 require 'socket' local_socket = Socket.new(:INET, :STREAM) local_addr = Socket.
我正在使用 OS X(使用 bash),并且是 unix 的新手。我想知道是否可以修改一些文件以便运行 ruby 程序,我不需要“ruby file.rb”,而是可以运行“ruby.rb”。 有理
我在用 Ruby 替换字符串时遇到一些问题。 我的原文:人之所为不如兽之所为。 我想替换为:==What== human does is not like ==what== animal does.
我想在一个循环中从 Ruby 脚本做这样的事情: 写一个文件a.rb(每次迭代都会改变) 执行系统(ruby 'a.rb') a.rb 将带有结果的字符串写入文件“results” a.rb 完成并且
我的问题是尝试创建一个本地服务器,以便我可以理解由我的新团队开发的应用程序。我的问题是我使用的是 Ruby 2.3.3,而 Gemfile 需要 2.3.1。我无法编辑 Gemfile,因为我被告知很
我有一个使用 GLI 框架用 Ruby 编写的命令行实用程序。我想在我的主目录中配置我的命令行实用程序,使用 Ruby 本身作为 DSL 来处理它(类似于 Gemfile 或 Rakefile)。 我
我的 Rails 应用 Controller 中有这段代码: def delete object = model.datamapper_class.first(:sourced_id =>
我正在寻找的解析器应该: 对 Ruby 解析友好, 规则设计优雅, 产生用户友好的解析错误, 用户文档的数量应该比计算器示例多, UPD:允许在编写语法时省略可选的空格。 快速解析不是一个重要的特性。
我刚开始使用 Ruby,听说有一种“Ruby 方式”编码。除了 Ruby on Rails 之外,还有哪些项目适合学习并被认可且设计良好? 最佳答案 Prawn被明确地创建为不仅是一个该死的好 PDF
我知道之前有人问过类似的问题,但是我该如何构建一个无需在前面输入“ruby”就可以在终端中运行的 Ruby 文件呢? 这里的最终目标是创建一个命令行工具包类型的东西。现在,为了执行我希望用户能够执行的
例如哈希a是{:name=>'mike',:age=>27,:gender=>'male'}哈希 b 是 {:name=>'mike'} 我想知道是否有更好的方法来判断 b 哈希是否在 a 哈希内,而
我是一名决定学习 Ruby 和 Ruby on Rails 的 ASP.NET MVC 开发人员。我已经有所了解并在 RoR 上创建了一个网站。在 ASP.NET MVC 上开发,我一直使用三层架构:
最近我看到 Gary Bernhardt 展示了他用来在 vim 中执行 Ruby 代码的 vim 快捷方式。捷径是 :map ,t :w\|:!ruby %. 似乎这个方法总是执行系统 Rub
在为 this question about Blue Ruby 选择的答案中,查克说: All of the current Ruby implementations are compiled to
我有一个 Ruby 数组 > list = Request.find_all_by_artist("Metallica").map(&:song) => ["Nothing else Matters"
我在四舍五入时遇到问题。我有一个 float ,我想将其四舍五入到小数点后的百分之一。但是,我只能使用 .round ,它基本上将它变成一个 int,意思是 2.34.round # => 2. 有没
我使用 ruby on rails 编写了一个小型 Web 应用程序,它的主要目的是上传、存储和显示来自 xml(文件最多几 MB)文件的结果。运行大约 2 个月后,我注意到 mongrel 进程
我们如何用 Ruby 转换像这样的字符串: 𝑙𝑎𝑡𝑜𝑟𝑟𝑒 收件人: Latorre 最佳答案 s = "𝑙𝑎𝑡𝑜𝑟𝑟𝑒" => "𝑙𝑎𝑡𝑜𝑟𝑟𝑒" s.u
通过 ruby monk 时,他们偶尔会从左侧字段中抛出一段语法不熟悉的代码: def compute(xyz) return nil unless xyz xyz.map {|a,
不确定我做错了什么,但我似乎弄错了。 问题是,给你一串空格分隔的数字,你必须返回最大和最小的数字。 注意:所有数字都是有效的 Int32,不需要验证它们。输入字符串中始终至少有一个数字。输出字符串必须
我是一名优秀的程序员,十分优秀!