我试图找出为字符串数组创建模型助手的最佳方法,然后使用该助手检查每个循环是否包含辅助数组中的任何字符串。
我想创建一个模型助手,它只是一个字符串数组:
["Google","IBM","Surge","Apple", "8","100"]
等。
在我的模型中,我使用Feedzirra导入并保存记录。
entries.each do |entry|
if entry.title ... INCLUDES ANY STRING FROM THE HELPER ARRAY
create!(....
)
end
end
我不确定如何:
有人可以指导我吗?
答案 0 :(得分:0)
这取决于目的。如果这是一个很少更改的小列表,您可以将其放在常量中:
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
答案 1 :(得分:0)
问题是你是否需要助手?你可以写一个非常简单的方法
["Google","IBM","Surge","Apple", "8", "100"].any? { |str| entry.include?(str) }