在Ruby中编制不同的儿童入学费用的最佳方法是什么?

时间:2015-03-30 02:15:51

标签: ruby-on-rails ruby

我正在编写一个程序,访问者可以选择他们有多少孩子,然后提供他们的年龄。然后,我需要根据孩子的年龄和每个年龄的成本来计算他们的总费用。

我假设我需要序列化一个哈希,以便将这些数据输入ActiveRecord,但我对如何读取此哈希并根据用户提供的哈希计算它感到困惑。

序列化处理这个特定问题的方法还是有更好的方法?

2 个答案:

答案 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