Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby更新属性与数据库属性之和_Ruby On Rails_Ruby_Database_Attributes_Sum - Fatal编程技术网

Ruby on rails Ruby更新属性与数据库属性之和

Ruby on rails Ruby更新属性与数据库属性之和,ruby-on-rails,ruby,database,attributes,sum,Ruby On Rails,Ruby,Database,Attributes,Sum,我有一个包含三个值的数据库:tips\u value、profile\u value和value。对于数据库中的每个条目,每当我更新条目时,我都希望取tips\u value和profile\u value的总和,并将其分配给value,但它不起作用 以下是我的更新功能: def update @affinity = Affinity.find(params[:id]) if @affinity.update_attributes(params[:affinity])

我有一个包含三个值的数据库:
tips\u value
profile\u value
value
。对于数据库中的每个条目,每当我更新条目时,我都希望取
tips\u value
profile\u 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 :sync_value_amount

private

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

您可以在模型中进行更新前回拨

比如:

before_update  :set_value

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