我正在尝试实现这种模式
class A
Mongoid::Document
belongs_to :price
def price
self[:price] || calculate_price
end
def calculate_price
#Some logic
end
end
意味着用户可以强制价格为A或获得计算价格。麻烦的是,设置器没有按预期工作:
2.0.0-rc2 :013 > a = A.new
=> #<A _id: 5215b3321d41c89a1f000001, price_id: nil>
2.0.0-rc2 :015 > a.price = Price.new
=> #<Price _id: 5215b3451d41c89a1f000002, i(inclusive_tax): nil, e(exclusive_tax): nil, tax_id: nil>
2.0.0-rc2 :016 > a.price
=> "5215b3451d41c89a1f000002"
覆盖setter的方法是什么,以便按预期工作?
我尝试添加
def price=(val)
super(val)
end
但是设置者没有super
。
任何提示?
答案 0 :(得分:0)
这项工作怎么样?
class A
Mongoid::Document
belongs_to :price
def price
Price.find(self[:price]) || calculate_price
end
def calculate_price
#Some logic
end
end