ActiveRecord::Relation#bind 的目的是什么?

2024-01-09

只是出于好奇 - 我正在阅读的文档关系::查询方法模块 http://apidock.com/rails/v3.2.8/ActiveRecord/QueryMethods/bind并找到了该方法:

def bind(value)
  relation = clone
  relation.bind_values += [value]
  relation
end

有谁知道这是什么?我试图自己寻找,但失败了。

UPDATE

我追踪了使用情况@bind_values到无底的深度ActiveRecord::ConnectionAdapters- 值不断传递,直到执行低级 SQL 语句。似乎各个适配器可能会使用这些。我的猜测是,这与准备好的语句有关,例如SELECT * FROM 'table' WHERE 'field' = ?,但我被困在这里了。任何人?


首先,我想解释一下按sql查找 http://apidock.com/rails/ActiveRecord/Base/find_by_sql/classActiveRecord 提供的方法。看起来这个方法可以这样使用:

Post.find_by_sql("SELECT title FROM posts WHERE author_id = ?", [author_id])

第二个参数称为“binds”,它是与查询中的问号相对应的变量数组。您确实想使用绑定数组将参数插入查询中,因为它避免了很多SQL注入 http://en.wikipedia.org/wiki/SQL_injection如果您自己进行绑定,则会发生危险:

Post.find_by_sql("SELECT title FROM posts WHERE author_id = #{author_id}")

那么,这与 ActiveRecord::Relation 有何关系? AREL 的要点是,您可以通过调用 ActiveRecord::Relation 对象上的方法来一次构建一点查询。这些方法有很多,以下是其中的一些列表:

http://apidock.com/rails/v3.2.8/ActiveRecord/QueryMethods http://apidock.com/rails/v3.2.8/ActiveRecord/QueryMethods

So the bind方法通过克隆当前对象来创建一个新对象,添加指定的value到列表bind_values,然后返回新对象。最终,当该关系用于生成查询时,该值将发现自己被用于进行查询。一example https://github.com/rails/rails/blob/b4051edf841c8a6780df9af7afa9892bfd811c79/activerecord/lib/active_record/relation.rb#L565 where bind_values传递给find_by_sql在里面exec_queries method:

@records = eager_loading? ? find_with_associations : @klass.find_by_sql(arel, bind_values)

您可以在以下位置搜索“bind_values”activerecordgem,你会发现几个类似的地方正在使用它。

我本以为bind方法将被调用where,但它似乎没有在 activerecord 中的任何地方被调用。也许这是旧设计的遗留物。我认为你不应该打电话bind在你的应用程序中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ActiveRecord::Relation#bind 的目的是什么? 的相关文章

  • Partial、Layout、Template 渲染问题

    情况 因此 当我访问页面时 我希望能够将布局应用到部分 我想要三个具有相同布局的部分 现在 我正在尝试使用以下命令来执行此操作 where shared services essay是这样的 p blah p div blah div
  • 如何使用Factory Girl生成回形针附件?

    我有一个包含许多图像的模型 Person 其中图像有一个称为数据的回形针附件字段 下面显示了缩写版本 class Person has many images end class Image has attached file data b
  • Rails f.check_box 设置选中/未选中值

    所以我在 Rails 中得到了一个带有复选框的表单助手 我希望该复选框在选中或取消选中时具有 thatvalue 或 thisvalue 值 我还没有找到如何设置它的地方 f check box field 我发现了类似的东西 但它不起作用
  • 在 Rails 4 中渲染部分/rake 任务/后台作业/模型中的视图

    我读过很多关于在 rake 任务 后台作业 模型中渲染 Rails 部分和视图的内容 我在 Stackoverflow 和网络上找到的绝大多数内容都描述了在 Rails 3 中工作的方法 但它们似乎已经过时了 而且我没有让它们工作 即使花了
  • 如何跳过 Devise SessionsController 的 before_filter ?

    我有一个before filter in my ApplicationController 也就是说 对于我的项目中的每个控制器 我怎么能够skip before filter对于设计的SessionsController创造行动 这是我的
  • ruby on Rails,会话过期通知

    我正在使用 ruby 1 9 3 和 Rails 3 2 我的实际会话处理如下所示 会话助手 def sign in user cookies remember token value user remember token expires
  • Rails:渲染不起作用,仍然出现“模板丢失”

    我目前正在学习 Rails 指南 我完成了这些步骤 但仍然遇到错误 我的 Ruby 版本是ruby 2 1 1p76Rails 版本是4 0 4 按照指南的指示 我创建了一个Article Controller class Articles
  • Ruby on Rails content_for 会自动进行 HTML 转义吗?

    使用 Rails 3 0 6 我发现在视图中 如果我执行 content for food name Macaroni Cheese 然后当我使用它回来时content for food name 那么 将被制作成 amp 已经 如果我做一
  • 通过使用 Minitest 的 Rails,如何设置 RuboCop 在每次使用 rake 运行测试时自动运行?

    当我运行以下命令时 我想要RuboCop https github com bbatsov rubocop在测试运行之前检查我指定的应用程序目录 bundle exec rake test 我添加了以下任务lib tasks test ra
  • 如何在 JS Rails 响应中包含 HTML?

    我有一个响应 HTML 和 JS AJAX 查询的 FooController app controllers foo controller rb class FooController lt ApplicationController l
  • Rails 3 - “无法解析 Yaml”

    我不知道我做错了什么 我尝试运行 rails c 但它只是给了我一个错误 10 分钟前它还在工作 C Ruby192 lib ruby 1 9 1 psych rb 148 in parse couldn t parse YAML at l
  • 数据库分片和 Rails

    在 Rails 中处理分片数据库的最佳方法是什么 分片应该在应用层 活动记录层 数据库驱动层 代理层还是其他层处理 各自的优点和缺点是什么 FiveRuns 有一个名为的 gem数据结构 https github com bpot data
  • 带有附加参数的redirect_to

    我是一个菜鸟 redirect to users url notice Succeed p p 然后我添加一个message它失败了 redirect to users url notice Succeed message test p p
  • Ruby on Rails 3 - 为每个请求重新加载 lib 目录

    我正在为 Rails 3 应用程序创建一个新引擎 正如您所猜测的 该引擎位于我的应用程序的 lib 目录中 但是 我在开发它时遇到了一些问题 事实上 每次更改引擎中的某些内容时 我都需要重新启动服务器 有办法避免这种情况吗 我可以强制rai
  • 通过 ESI:include 设置 Cookie,如何?

    我正在尝试使用 esi 在我的网站上创建忍者缓存 这个想法是 该网站大部分是静态的 我只需要在用户是否登录时做一些花哨的事情 所以我试图在页面A上放置一个 并在页面B的应用程序中设置触发器 这样我就可以将页面 A 缓存在 varnish 上
  • Rails 4 的 mobile_fu

    我正在尝试将我的应用程序从 Rails 3 2 13 切换到 Rails 4 在此过程中 我遇到了一个主要障碍 我使用 gem mobile fu 来确定用户是否来自移动设备 该 gem 需要 Railties 3 2 13 但 Rails
  • Rails 5:验证复选框的接受

    我有一个带有一些嵌套字段的注册表单 在该表单中我添加了一个服务条款的复选框 我正在尝试验证复选框何时被选中 如果没有 则返回错误 validates acceptance of agreement allow nil gt true acc
  • Rails 从 OrdersController 更新用户模型的属性

    这是我的代码 订单控制器类 def create order Order new params order if order purchase work GATEWAY store credit card options result wo
  • Capybara with Rails:如何仅查找不可见元素

    我正在 Rails 项目 Rails 5 2 0 中使用 Capybara capybara 3 1 0 进行系统测试 确保元素不可见的方法是什么 我当时用的是visible false选项 直到我发现它也匹配可见元素 例如我使用 find
  • 使用 Passenger + Apache 相对于 Webrick 的优势

    我想说服我的管理层 使用 Apache 乘客设置是继续生产的方法 而不是使用 webrick 或 mongrel 我从网上找到了一些观点 如果您能添加您的想法 那将非常有帮助 因为这将有力地帮助我表达我的观点 欢迎提供技术细节 如果您有任何

随机推荐

  • 比亚恩会犯错误吗? (一边解释模板),还是我还是不明白?

    伙计们 我正在做 C 编程语言第三版 的练习 第 340 页有一个函数示例 template
  • 确定文件是否为空(SSIS)

    我正在尝试在 SSIS 2005 中开发一个包 我的过程的一部分是检查网络上的文件是否为空 如果不为空 则需要传递成功状态 否则 需要传递不成功状态 我想我需要一个脚本任务 但不知道如何去做 任何帮助表示赞赏 Create a connec
  • 保留 Emacs 中的窗口布局

    我已经以某种方式设置了我的窗口 如何保存此设置以供以后调用 我有时还是用C x r w
  • 验证本地 Laravel Homestead 服务器上的自签名证书

    我按照以下详细信息创建了 SSL 证书 因此我可以使用 https 通过 Laravel 的 Homestead 运行本地测试站点 在 homestead 虚拟机上添加 https 证书 https stackoverflow com qu
  • UITableViewController 背景图片

    如何设置图像UITableViewController 我使用了很多东西 但它不能帮助我将图像设置为背景 UIImageView bgView UIImageView alloc initWithImage UIImage imageNam
  • 在 r 绘图文本中指定小数位?

    我尝试格式化在基本图形系统中创建的回归曲线的标签 基本上 该标签从变量中提取斜率 截距和 r 方值 示例如下 plot rnorm 10 type n xlim c 0 100 ylim c 0 100 text x 0 y 100 adj
  • VBA许多按钮指向同一个_Click sub

    我的表单上有一堆文本框按钮对 单击按钮时 我想将文本框的值插入数据库 名称 文本框 和 按钮 遵循命名标准 例如 Value1Tb Value1Cmd 和 Value2Tb Value2Cmd 我的问题是 因为我想对每个按钮执行相同的操作
  • 哪个 Eclipse 可以与 ADT 完美配合?

    Eclipse 有很多版本 例如 靛蓝 朱诺 开普勒 月球 火星 其中哪一个最适合 ADT Stack Overflow 上有很多这样的问题 但都是 4 5 年前的问题 我正在寻找更新的东西 我提出你的问题是因为我自己也想知道这个问题 因为
  • 当一个子类没有额外属性时,教义表类继承

    我的映射有问题 我无法让它工作 我有一个像这样的抽象基类 Entity Table name actions InheritanceType JOINED DiscriminatorColumn name type type string
  • 依赖注入和开发效率

    Abstract 在过去的几个月里 我一直在编写一个轻量级 基于 C 的游戏引擎 具有 API 抽象和实体 组件 脚本系统 它的整体理念是通过提供类似于 Unity 引擎的架构来简化 XNA SlimDX 等游戏开发过程 设计挑战 正如大多
  • 获取 python for 循环中的第一个和最后一个项目

    是否有一种优雅且Pythonic的方法来捕获在生成器上迭代的for循环中的第一个和最后一个项目 from calendar import Calendar cal Calendar 6 month dates cal itermonthda
  • 带 apexcharts 的半圆环图

    I am trying to make half donut chart with multiple data as following picture using apexcharts 到目前为止我只发现Semi Circle Gauge
  • Raphael JS Pie:将 ID 添加到路径切片

    我在 Raphael Google Groups 上看到过这个问题 但是经过几个小时的搜索 以及这里和 Google 我似乎找不到解决方案 我只是希望能够使用 jQuery 定位我的饼图 svg 路径 切片 但我无法弄清楚如何将自定义 id
  • TFS 在更改映射时删除了我的文件

    I had这是一个相当大的解决方案 这里有很多代码 由于 TFS 存在一些问题 我想创建一个新的 干净 存储库 我删除了到旧存储库的映射 并尝试创建新映射 这导致了一个错误 即已经存在到我的解决方案的映射 我去了Source Control
  • AJAX 可以从远程服务器请求数据吗?

    我可以在 JavaScript 中使用 XMLHttpRequests 来请求与发出请求的服务器不同的服务器上的文件吗 谢谢 您需要使用一个名为的方法JSONP http remysharp com 2007 10 08 what is j
  • 如果满足条件则停止 Gulp 任务

    我试图做到这一点 因此如果未指定 theme 标志 它会停止 gulp 任务 并想知道以 DRY 方式执行此操作的最佳方法 我希望每个单独的任务在未指定 theme 的情况下停止 并且在不满足条件时也让默认任务停止 到目前为止我已经尝试了一
  • 消除 Visual Studio 解决方案文件夹中的临时文件

    我正在清理一堆来自不同来源的视觉工作室项目 解决方案 并且有数量惊人的临时文件 and 临时文件夹存储在每个溶液中 我想知道哪些文件类型可以安全删除 以便我可以编写一个脚本来处理繁重的工作 这样当我尝试组织整个文件夹结构并将其链接到正确的共
  • 使用 AVFoundation 捕获静态图像

    我目前正在创建一个简单的应用程序 它使用 AVFoundation 将视频流式传输到UIImageView 为了实现这一点 我创建了一个实例AVCaptureSession and an AVCaptureSessionPreset let
  • jQuery:仅在父链接上防止默认

    解决方案 找到了解决方案 使用的父节点 skaftetopmenu li gt a click function e e preventDefault var subid this parentNode attr id if subid f
  • ActiveRecord::Relation#bind 的目的是什么?

    只是出于好奇 我正在阅读的文档关系 查询方法模块 http apidock com rails v3 2 8 ActiveRecord QueryMethods bind并找到了该方法 def bind value relation clo