是否可以将 mongoid 配置field
为反序列化为 aStruct
而不是 a Hash
?(有默认值)
我的用例:一家公司的订阅计划在我的模型中存储为哈希。
以前作为哈希
class Company
include Mongoid::Document
field :subscription, type: Hash, default: {
ends_at: 0,
quantity: 0,
started_at: 0,
cancelled: false,
}
我希望我不必写Company.first.subscription[:ends_at]
,我宁愿写Company.subscription.ends_at
我想像下面这样会更好
class Company
include Mongoid::Document
field :subscription_plan, type: Struct, default: Struct.new(
:ends_at, :quantity, :started_at, :cancelled
) do
def initialize(
ends_at: nil,
quantity: 0,
starts_at: nil,
cancelled: false
); super end
end
end
如果计划可以在一个类中定义就更好了
class SubscriptionPlan < Struct.new(
ends_at, :quantity, :starts_at, :cancelled
) do
def initialize(
ends_at: nil,
quantity: 0,
starts_at: nil,
cancelled: false
); super; end
end
class Company
field :subscription_plan, type: SubscriptionPlan, default: SubscriptionPlan.new
end
我怎样才能使它工作?