我试图找出为字符串数组创建模型助手的最佳方法,然后使用该助手检查每个循环是否包含助手数组中的任何字符串。
我想要创建一个模型助手,它只是一个字符串数组:
["Google","IBM","Surge","Apple", "8","100"]等。
在我的模型中,我使用Feedzirra来导入和保存记录。
entries.each do |entry|
if entry.title ... INCLUDES ANY STRING FROM THE HELPER ARRAY
create!(....
)
end
end我不知道如何:
有人能指点我吗?
发布于 2014-02-09 19:47:13
这取决于目的。如果这是一个很少改变的小列表,您可以将它放在一个常量中:
class Entry < ActiveRecord::Base
KEYWORDS = ["Google","IBM","Surge","Apple", "8","100"].freeze
def title_matches?
!self.title.scan(/#{KEYWORDS.join('|')}/).empty?
end
end只需简单说明:字符串匹配是区分大小写的,因此您可能希望在匹配之前先将列表项和标题降为小写。
如果这是一个动态列表,我可能会将关键字存储在一个表中:关键字(id:整型名称: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发布于 2014-02-09 19:47:30
问题是你是否需要帮手?你可以写一个非常简单的方法
["Google","IBM","Surge","Apple", "8", "100"].any? { |str| entry.include?(str) }https://stackoverflow.com/questions/21663680
复制相似问题