mysql - 在Ruby on Rails中使用事件记录执行sql操作

标签 mysql ruby-on-rails activerecord

我有两个模型 A 和 B。在表 A 中,我有三列 A1、A2 和 A3。在表 B 中,我也有三列 B1、B2 和 B3。 当我的 A Controller 更新其表时,我想传递一个 id, Controller B 可以使用该 id 来更新其表,其中的 sql 语句应如下所示:

UPDATE TABLE B SET B2 = some_value WHERE B1=param_value AND B2=NULL 

我特别需要 B2 为 null 或空,表 B 中有多个带有 B1=param_value 的条目,但只有一行带有 B1=param_value 可以有B2 空。

我已将此函数保留在我的 application_controller.rb 文件中

def update_tableB(id)
   temp = B.find_by_B1(id).find_by_B2(null)
   # Not sure how to set temp.B2 to some value I want
   B.update(temp).find_by_B1(id).find_by_B2(null)
end

最佳答案

在 ActiveRecord 中,您使用映射对象的模型,而不是直接使用表。因此,假设 B 是一个模型,您的 SQL 更新查询将按如下方式执行

Model.where(b1: param_value, b2: nil).update_all(b2: some_value)

我无法更具体,因为你的问题太抽象了。

关于mysql - 在Ruby on Rails中使用事件记录执行sql操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32683952/

相关文章:

MySQL语句-从一组中选择最大值

php - 使用 Laravel Query 计算两列的值

css - 用于打印背景颜色的 rails 5 bootstrap 4 样式表

ruby-on-rails - 如何配置 Bundler 以使用本地 gem 依赖项

ruby-on-rails - 如何将方法添加到 activerecord 集合?

ruby-on-rails - 查询数组到。事件记录关系

mysql - 当关系按连接模型的属性排序时,ActiveRecord select 不创建访问器方法

php - 在 phpmyadmin 中使用 session 变量创建表

MySQL - 在 CREATE FUNCTION 中存储变量

ruby-on-rails - 如何让考拉与Omniauth完美搭配?