Ruby 使用数据库属性总和更新属性

Ruby Update Attribute with Sum of Database Attributes

我有一个包含三个值的数据库:tips_valueprofile_valuevalue。对于数据库中的每个条目,每当我更新条目时,我想取 tips_valueprofile_value 的总和并将其分配给 value,但它不起作用。

这是我的更新函数:

def update
    @affinity = Affinity.find(params[:id])

    if @affinity.update_attributes(params[:affinity])
        update_column(@affinity.value, @affinity.tips_value + @affinity.profile_value)
        redirect_to @affinity
    else
        render 'edit'
    end
end

我怎样才能做到这一点?

制作 before_update 会更好,这样可以在您更改 tips_valueprofile_value 时从任何地方更新数据库中的 value .

在您的亲和力模型中添加

before_update :sync_value_amount

private

def sync_value_amount
   self.value = self.tips_value + self.profile_value
end

您可以在您的模型中进行 before_update 回调

喜欢:

before_update  :set_value

private
  def set_value
     self.value= @affinity.tips_value + @affinity.profile_value
  end