考慮遷移如何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