我正在编写一个程序,访问者可以选择他们有多少孩子,然后提供他们的年龄。然后,我需要根据孩子的年龄和每个年龄的成本来计算他们的总费用。
我假设我需要序列化一个哈希,以便将这些数据输入ActiveRecord,但我对如何读取此哈希并根据用户提供的哈希计算它感到困惑。
序列化处理这个特定问题的方法还是有更好的方法?
答案 0 :(得分:0)
Postgresql确实将数组识别为数据类型。所以你可以走那条路。但是,您可能希望将此数据分离到其自己的表中。
class User < ActiveRecord::Base
has_many :children
...
class Children < ActiveRecord::Base
belongs_to :user, dependent: :destroy
...
表格式如下:
table: users
|id|fname|lname|...
table: children
|id|name|user_id|...
现在,每个用户拥有多少个孩子并不重要,您将始终拥有一个简单的界面来添加,删除和查询它们。
c = User.first
c.children #returns array of Child objects.
序列化是一种可行的方法,但模型和表格可以让你更加与数据库无关。
答案 1 :(得分:0)
我认为,哈希序列化并不是一种RoR方式。 相反,使用ActiveRecord模型按年龄计算成本
AgeCost
--------
age: int
cost: decimal
可以轻松找到总费用
kids_ages = [4, 7, 10]
total_cost = 0
kids_ages.each do |kid_age|
age_cost = AgeCost.find_by_age(kid_age)
total_cost += age_cost.cost if age_cost
end