Defining a Rails helper (or non-helper) function for use everywhere, including models
ruby-on-rails
Solution
if you want to have such a helper method in every class in your project, than you are free to add this as a method to `Object` or whatever you see fits:
module MyApp
module CoreExtensions
module Object
def blank_to_negative
self.is_number? ? self : -1
end
end
end
end
Object.send :include, MyApp::CoreExtensions::Object
Problem
I have a function that does this: ``` def blank_to_negative(value) value.is_number? ? value : -1 end ``` If the value passed is not a number, it converts the value to -1. I mainly created this function for a certain model, but it doesn't seem appropriate to define this function in any certain model because the scope of applications of this function could obviously extend beyond any one particular model. I'll almost certainly need this function in other models, and probably in views. What's the most "Rails Way" way to define this function and then use it everywhere, especially in models? I tried to define it in `ApplicationHelper`, but it didn't work: ``` 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 ``` That told me undefined method `blank_to_negative' for # I've read that you're "never" supposed to do that kind of thing, anyway, so I'm kind of confused.