ruby-on-rails – 创建自定义集合方法
我正在尝试创建几种方法来操作对象集合.
我的控制器中有以下声明 def show @big = Configuration.find(params[:id]).elements @custombig = @big.getchanged end 在Configuration模型中,我有: require 'lib/validation_rules' class Configuration < ActiveRecord::Base include ValidationRules 在我的lib文件夹中,我有一个名为validation_rules的文件: module ValidationRules def getchanged() names =[] self.each do |pp| names << pp.name return names end end end 这个想法很简单.相同的模型需要很多配置规则,我想要保留在控制器和模型之外(当我说了很多,我的意思是大约200). 上面代码的问题是,当我调用它时,它告诉我该方法不存在,并且似乎发生了这种情况,因为@big是一个配置数组,而不仅仅是一个配置对象. 如何让rails将这个“自定义”方法库添加到默认的Array库中? 对于记录,上面的方法只是一个测试而不是我需要做的,代码所做的不是问题,但是Rails在抛出错误之前甚至没有查看. 非常感谢你的帮助! 解决方法
您可以扩展Enumerable模块,它包含在Array等集合类中,并定义诸如“any?”之类的方法.并’收集’.例如:
module Enumerable def do_something self.each do |item| yield(item) end end end letters = ['a','b','c'] letters.do_something { |letter| p letter } 我的do_something方法什么都不做,真的 – 称之为调用’each’.但是,当然您可以将逻辑添加到其中以实现所需的结果. 请记住,包括’Enumerable’在内的任何内容现在都有do_something方法,因此该方法应编码为与任何类型都能很好地匹配. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |