Ruby on rails 模型帮助器:根据循环检查的字符串数组
我试图找出为字符串数组创建模型帮助器的最佳方法,然后使用该帮助器检查每个循环是否包含帮助器数组中的任何字符串 我想创建一个模型助手,它只是一个字符串数组:Ruby on rails 模型帮助器:根据循环检查的字符串数组,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我试图找出为字符串数组创建模型帮助器的最佳方法,然后使用该帮助器检查每个循环是否包含帮助器数组中的任何字符串 我想创建一个模型助手,它只是一个字符串数组: [“谷歌”、“IBM”、“浪涌”、“苹果”、“8”、“100”]等 在我的模型中,我使用Feedzirra导入和保存记录 entries.each do |entry| if entry.title ... INCLUDES ANY STRING FROM THE HELPER ARRAY create!(.
[“谷歌”、“IBM”、“浪涌”、“苹果”、“8”、“100”]
等
在我的模型中,我使用Feedzirra导入和保存记录
entries.each do |entry|
if entry.title ... INCLUDES ANY STRING FROM THE HELPER ARRAY
create!(....
)
end
end
我不知道如何:
有人能指导我吗?这取决于目的。如果这是一个很少更改的小列表,您可以将其放在常量中:
class Entry < ActiveRecord::Base
KEYWORDS = ["Google","IBM","Surge","Apple", "8","100"].freeze
def title_matches?
!self.title.scan(/#{KEYWORDS.join('|')}/).empty?
end
end
类条目
请注意:字符串匹配是区分大小写的,因此在匹配之前,您可能希望将列表项和标题降为小写
如果这是一个动态列表,我可能会将关键字存储在一个表中:keywords(id:integer name:string)。然后将匹配方法修改为:
class Entry < ActiveRecord::Base
def title_matches?(keywords)
!self.title.scan(/#{keywords.join('|')}/).empty?
end
def self.update_from_feed!
# Get keywords
keywords = Keyword.pluck(:name)
# Get entries
entries = <code to fetch feed>
entries.each do |entry|
if entry.title_matches?(keywords)
create!(....)
end
end
end
end
类条目
条目。每个do |条目|
如果条目.title\u匹配?(关键字)
创造!(....)
结束
结束
结束
结束
问题是你是否需要助手?你可以写一个非常简单的方法
["Google","IBM","Surge","Apple", "8", "100"].any? { |str| entry.include?(str) }
这个名单现在知道了吗?为什么不将此数组作为常量包含在模型类中,然后使用验证?出于好奇,如果我必须经常添加到此列表,即列表不断增长,我会说什么方向。我修改了答案。希望这有帮助。很好,这确实是有帮助的-谢谢。