Mongoid覆盖关系设置器

时间:2013-08-22 06:49:16

标签: mongoid

我正在尝试实现这种模式

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

任何提示?

1 个答案:

答案 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