1
所以我知道hstore只存儲在字符串中的任何一個鍵和特別是值。我正在尋找一種方法來設置他們的數據類型。在rails或hstore中有沒有辦法做到這一點?Rails 4 hstore定義數據類型
到目前爲止,我所做的是重寫getters並取決於我想要的數據類型。這是我迄今爲止:
class ModelWithHstore < ActiveRecord::Base
store_accessor :properties, :some_boolean_field, :some_integer_field, :some_datetime_field
validate :validate_range
def some_boolean_field
return if self[:properties].nil? || self[:properties][__method__.to_s].nil?
if [true, 'true', '1'].include? self[:properties][__method__.to_s]
return true
elsif [false, 'false', '0'].include? self[:properties][__method__.to_s]
return false
end
self[:properties][__method__.to_s]
end
def some_integer_field
return if self[:properties].nil? || self[:properties][__method__.to_s].nil?
self[:properties][__method__.to_s].to_i
end
def some_datetime_field
return if self[:properties].nil? || self[:properties][__method__.to_s].nil?
DateTime.strptime(self[:properties][__method__.to_s].to_s, '%F %T')
end
private
def validate_range
errors.add(:some_integer_field, "value out of range") if !some_integer_field.between?(10, 90)
end
end
而且因爲他們是獲得者。我認爲他們也被用在驗證者和其他地方。但我真的不確定這樣的事情是否已經存在,或者是否有更好的實現方法。
乾杯!