k_D*_*ank 2 ruby recursion ruby-on-rails
repeat_purchases_percent是我的Category模型中的一个方法.保证所有无父类别都具有数据库中future_purchases_percent的值.子类别可能有也可能没有future_purchases_percent.如果他们这样做,我想使用那个价值.如果没有,我想使用父的值,依此类推.
我尝试了一种递归方法.
def future_purchases_percent
if self.future_purchases_percent.nil?
Category.find(self.parent_id).future_purchases_percent
else
future_purchases_percent
end
end
Run Code Online (Sandbox Code Playgroud)
这会陷入一个不断评估的循环中:
if self.future_purchases_percent.nil?
Run Code Online (Sandbox Code Playgroud)
我怎样才能正确实现这个方法?
a || b
表达式.belongs_to :parent, :foreign_key => 'parent_id', :class_name => :Category
为此模型添加一个.现在,随着一切就绪,您可以编写真正的声明性代码:
def safe_future_purchases_percent
future_purchases_percent || parent.safe_future_purchases_percent
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1823 次 |
最近记录: |