ruby-on-rails – 定义Rails帮助程序(或非帮助程序)函数,以便在
发布时间:2020-12-17 03:03:32 所属栏目:百科 来源:网络整理
导读:我有一个功能,这样做: def blank_to_negative(value) value.is_number? ? value : -1 end 如果传递的值不是数字,则将值转换为-1. 我主要为某个模型创建了这个函数,但是在任何特定的模型中定义这个函数似乎都不合适,因为这个函数的应用范围显然可以超出任何
我有一个功能,这样做:
def blank_to_negative(value) value.is_number? ? value : -1 end 如果传递的值不是数字,则将值转换为-1. 我主要为某个模型创建了这个函数,但是在任何特定的模型中定义这个函数似乎都不合适,因为这个函数的应用范围显然可以超出任何一个特定的模型.我几乎肯定需要在其他模型中使用此功能,并且可能在视图中. 什么是最“Rails方式”的方式来定义这个功能,然后在任何地方使用它,特别是在模型中? 我试图在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 那告诉我
无论如何,我已经阅读了you’re “never” supposed to do that kind of thing,所以我有点困惑. 解决方法
如果你想在你的项目的每个类中都有这样一个帮助方法,那么你可以自由地将它作为一个方法添加到Object或你看到的任何东西:
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |