考虑迁移如何2分贝列映射到一个属性
class CreateTalks < ActiveRecord::Migration
def self.up
create_table :talks do |t|
t.integer :duration_hours
t.integer :duration_minutes
end
end
def self.down
drop_table :talks
end
end
和模型
class Talk < ActiveRecord::Base
end
和对象
class Duration
attr_accessor :hours, :minutes
end
我怎么映射DURATION_HOURS和DURATION_MINUTES列Talk中的Duration属性,以便我可以做
d = Talk.first.duration
hours = d.hours
minutes = d.minutes
我知道在这种情况下,我可以将小时和分钟转换为秒,并将它们存储在单个列中,但我期望了解如何使用ActiveRecord实现这种类型的映射。
你能否展开一下,你的意思是说我添加了duration_hours和duration_minutes的存取方法来填充持续时间属性?如果是这种情况,他们需要成为公众访问者还是可以让他们变成私人的? (我想封装duration_hours和duration_minutes,以便应用程序的其余部分只使用duration属性) – opsb 2010-01-15 23:49:25
我会写两种方法(duration =(setter)和duration(getter))。首先解析传递的字符串(以任何可能的格式),并适当设置小时和分钟的持续时间,第二个 - 从db中获取这两个值,并以任意格式将它们组合在一起。 但开始 - 我会保持持续时间为整数秒。或者,如果你需要更好的精度,如浮点数。 – Eimantas 2010-01-16 08:55:13