我需要一个before_update回调,它只会将列中的值增加2,大于正在创建的新行的值。但是,我在引用现有表中的列属性和我正在插入的行的列属性之间感到困惑。
我使用以下参考: http://apidock.com/rails/ActiveRecord/Relation/update_all
class Region < ActiveRecord::Base
before_create :update_tree
def update_tree
Region.where('rgt >= ?', self.rgt).update_all(rgt: rgt+2)
end
end
答案 0 :(得分:0)
如果您需要将每个记录的rgt大于或等于self.rgt
增加2,您可以使用:
def update_tree
Region.where('rgt >= ?', self.rgt).update_all("rgt = rgt + 2")
end
这将生成一个查询:
UPDATE "regions" SET rgt = rgt + 2 WHERE (rgt >= X)
(X是self.rgt
)