在Rails中从另一个模型中显示逻辑?

时间:2011-09-21 14:58:48

标签: ruby-on-rails logic models controllers

我有一个模型Statistic,它有一个Character模型的6个统计数据。用户可以输入力量,智力等值。我写了一种根据输入的分数自动计算奖金或罚款的方法。以下是我的统计模型中宪法奖金的逻辑:

def con_modifier
  (constitution.to_i - 10) / 2
end

我在我的角色视图中显示从统计模型收集的信息,我想看到奖金,所以我在我的角色模型中的Show方法中定义了它,如下所示:

@con_modifier = @character.statistic.con_modifier

我可以在角色视图中查看它而没有任何问题。但这是我的问题。我有另一个模型,强韧,它需要取这个数字并用它来计算强韧豁免的总价值。到目前为止,这就是我所拥有的:

def total
  fortitude_base.to_i + @con_modifier + magic.to_i + misc.to_i
end

但后来我收到了这个错误:

nil can't be coerced into Fixnum

显然,它没有调出正确的信息。有任何想法吗?我是否还需要在Fortitude控制器中定义它,或者我可以简单地在Fortitude模型中定义它并在视图中调用它吗? “坚韧”正在我的角色视图中显示,所以我认为在角色模型中的Show方法中定义这个逻辑只会起作用,但是我现在已经对这个问题进行了几天的攻击,没有任何进展。谢谢!

1 个答案:

答案 0 :(得分:2)

将修饰符作为参数传递:

def total(con_mod)
  fortitude_base.to_i + con_mod + magic.to_i + misc.to_i
end

然后在别处使用它:

@fortitude = Fortitude.whatever
@saving_throw = @fortitude.total(@character.statistic.con_modifier)