我的rails应用程序有一个运营商模型和一个预订模型,它们通过以下关系相关:
class Booking < ActiveRecord::Base
belongs_to :operator
end
我的应用程序进一步允许用户在检查票价后在特定日期和时间(从取货地点到放置位置)查找出租车,并预订出租车,从而在数据库中的预订模型中创建条目。创建新预订时,会向用户显示一个典型的表单('user_form'),在表单中输入他们的姓名和其他详细信息。这些详细信息存储在数据库的预订表中的相应列中。
我希望我的应用能够在预订表中存储另外三个参数,而不会通过user_form填充这些参数。这些参数是:取货地点,下落地点和票价。
用户在搜索驾驶室时填充拾取和下落位置,而在根据业务逻辑进行一些内部计算后,将向用户显示票价参数。 我不能将这些参数作为参数传递,因为这些是敏感参数,如果被篡改,它们可能会对业务产生负面影响。
我的预订表中有适当的列来存储这些参数。另外,我的bookings_controller允许将这些参数保存为强参数。 如何在为运营商创建新预订时将这三个参数保存在我的预订表中?如果需要,可以提供更多详细信息。
答案 0 :(得分:0)
我会使用attr_accessor来存储表单中的相关参数,然后使用before_validation方法查看这些参数并计算票价。这可以计算票价并将其写入数据库。例如
#in booking
attr_accessor :foo
before_validation :calculate_fare_if_foo
def calculate_fare_if_foo
unless self.foo.blank?
#do some calculation based on foo and the other attributes, to set self.fare
end
end