Ruby 使用数据库属性总和更新属性
Ruby Update Attribute with Sum of Database Attributes
我有一个包含三个值的数据库:tips_value
、profile_value
和 value
。对于数据库中的每个条目,每当我更新条目时,我想取 tips_value
和 profile_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_value
或 profile_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
我有一个包含三个值的数据库:tips_value
、profile_value
和 value
。对于数据库中的每个条目,每当我更新条目时,我想取 tips_value
和 profile_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_value
或 profile_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