我有一个功能可以做到这一点:
def blank_to_negative(value)
value.is_number? ? value : -1
end
如果传递的值不是数字,则将值转换为 -1。
我主要为某个模型创建了这个函数,但是在任何一个模型中定义这个函数似乎都不合适,因为这个函数的应用范围显然可以超出任何一个特定的模型。我几乎可以肯定在其他模型中需要这个功能,并且可能在视图中。
定义此功能然后在任何地方使用它的最“Rails Way”方式是什么,尤其是在模型中?
我试图在 中定义它ApplicationHelper
,但它不起作用:
class UserSkill < ActiveRecord::Base
include ApplicationHelper
belongs_to :user
belongs_to :skill
def self.splice_levels(current_proficiency_levels, interest_levels)
Skill.all.reject { |skill| !current_proficiency_levels[skill.id.to_s].is_number? and !interest_levels[skill.id.to_s].is_number? }.collect { |skill| {
:skill_id => skill.id,
:current_proficiency_level => blank_to_negative(current_proficiency_levels[skill.id.to_s]),
:interest_level => blank_to_negative(interest_levels[skill.id.to_s]) }}
end
end
那告诉我
未定义的方法 `blank_to_negative' 用于#
无论如何,我读到你“永远”不应该做那种事情,所以我有点困惑。