我正在尝试创建几种方法来操作对象集合。
我的控制器中有以下语句
def show
@big = Configuration.find(params[:id]).elements
@custombig = @big.getchanged
end
在配置模型中我有:
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 将这个“自定义”方法库添加到默认的数组库中?
根据记录,上面的方法只是一个测试,并不完全是我需要做的,代码所做的不是问题,但 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 方法,因此该方法应该编码为能够与任何类型很好地配合。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)