首先对这个简单的问题表示抱歉,在花了很多时间之后,我放弃了在没有任何帮助的情况下找到它:(。
简化后,我有以下情况:一个表rates
中的列rate
和converted
是用ruby中的scaffold语句生成的。rate
列将显示在视图中,但converted
列不会仅用于应用程序的后台。
现在我的目标是要求用户输入rate
字段中给定的速率,这样应用程序就可以计算converted
并将该值存储在数据库中。这是一个简单的计算:converted
=1/速率。
请告知:)。
最佳答案
有很多方法可以做到这一点,包括但不限于将逻辑放入模型(可能是最干净的)、控制器以及视图本身,并使用隐藏字段和javascript。
我会在模型级别通过回调来实现。例如,将其添加到rates.rb模型中:
before_save :calculate_converted_rate
private
def calculate_converted_rate
self.converted = 1.0 / self.rate
end
正如代码可能建议的那样,每次保存rates实例之前,都将转换字段设置为rate字段的倒数。
有关activerecord回调的更多信息:http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
关于ruby-on-rails - Ruby on Rails-简单的计算显示在 View 中并存储在数据库中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11717724/