我有两个模型 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/