我有两个模型A和B。在表A中,我有三个列A1,A2和A3。在表B中,我还有三列B1,B2和B3。当我的A控制器更新其表时,我想传递一个ID,控制器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)
由于您的问题太抽象了,我无法更具体地说明这一点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句