gpt4 book ai didi

ruby-on-rails - 创建自定义集合方法

转载 作者:行者123 更新时间:2023-12-03 00:20:11 25 4
gpt4 key购买 nike

我正在尝试创建几种方法来操作对象集合。

我的 Controller 中有以下语句

  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

这个想法很简单。相同的模型将需要很多配置规则,我希望将其排除在 Controller 和模型之外(当我说很多时,我的意思是大约 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 方法,因此应该对该方法进行编码,以便能够与任何类型很好地配合。

关于ruby-on-rails - 创建自定义集合方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4845107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com