我有一个带有num1 num2和sum字段的Items控制器。我想在edit.html.erb中编辑num1或num2时更新数据库中的sum字段。为了计算用户输入时的总和字段,我已经在使用回调
before_create :set_sum_value
private
def set_sum_value
self.sum = (self.num1 + self.num2)
true
end
在更新num1,num 2时我应该使用什么回调以便自动计算总和?
答案 0 :(得分:0)
不要使用回叫,你不需要它。覆盖num1
和num2
的setter,以便每次更改值时,总和会自动更新。
class Model
def num1=(value)
update_sum
write_attribute(:num1, value)
end
def num2=(value)
update_sum
write_attribute(:num2, value)
end
private
def update_sum
self.sum = num1.to_i + num2.to_i
end
end
在这里使用回调不是合适的选择。
num1
或num2
并致电.sum
,则会返回错误的值。另请注意,在update_sum
中,我将bot数值强制为整数。实际上,除非确保num1
转换为0,否则您可以将nil值设置为nil
,这会导致计算总和时出现崩溃,除非您确保将 ".container": {
backgroundColor:"white"
}
"#select_language_pannel": {
layout: 'vertical',
width: '84%',
height: '45%',
image: '/images/select_language_pannel.png'
}
"#language_label":{
top: '20%',
color : '#008c99',
width: '100%',
textAlign: 'center',
text: L('select_language'),
font: {fontSize: '18dp', fontWeight:"bold"}
}
"#arabic_button": {
layout: 'vertical',
top: '40%',
width: '64%',
height: '13%',
backgroundImage : '/images/btn_login_common_normal.png',
backgroundSelectedImage: '/images/btn_login_common_pressed.png'
}
"#arabic_text": {
layout: 'vertical',
color: '#008c99',
height: '100%',
highlightedColor: '#FFFFFF'
}
"#english_button": {
layout: 'vertical',
top: '60%',
width: '64%',
height: '13%',
backgroundImage : '/images/btn_login_common_normal.png',
backgroundSelectedImage: '/images/btn_login_common_pressed.png'
}
"#english_text": {
color: '#008c99',
height: '100%',
highlightedColor: '#FFFFFF'
}
"#select_language_pannel": {
layout: 'vertical',
width: '84%',
height: '45%',
image: '/images/select_language_pannel.png'
}
"#language_label":{
top: '20%',
color : '#008c99',
width: '100%',
textAlign: 'center',
text: L('select_language'),
font: {fontSize: '18dp', fontWeight:"bold"}
}
"#arabic_button": {
layout: 'vertical',
top: '40%',
width: '64%',
height: '13%',
backgroundImage : '/images/btn_login_common_normal.png',
backgroundSelectedImage: '/images/btn_login_common_pressed.png'
}
"#arabic_text": {
layout: 'vertical',
color: '#008c99',
height: '100%',
highlightedColor: '#FFFFFF'
}
"#english_button": {
layout: 'vertical',
top: '60%',
width: '64%',
height: '13%',
backgroundImage : '/images/btn_login_common_normal.png',
backgroundSelectedImage: '/images/btn_login_common_pressed.png'
}
"#english_text": {
color: '#008c99',
height: '100%',
highlightedColor: '#FFFFFF'
}
转换为0。
答案 1 :(得分:0)
您可以将此代码放入模型中:
after_validation :set_sum_value
def set_sum_value
self.sum = num1 + num2
end