首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型助手:用于检查循环的字符串数组

模型助手:用于检查循环的字符串数组
EN

Stack Overflow用户
提问于 2014-02-09 19:15:55
回答 2查看 50关注 0票数 1

我试图找出为字符串数组创建模型助手的最佳方法,然后使用该助手检查每个循环是否包含助手数组中的任何字符串。

我想要创建一个模型助手,它只是一个字符串数组:

["Google","IBM","Surge","Apple", "8","100"]等。

在我的模型中,我使用Feedzirra来导入和保存记录。

代码语言:javascript
复制
entries.each do |entry|
    if entry.title ... INCLUDES ANY STRING FROM THE HELPER ARRAY

            create!(....
            )

    end
end

我不知道如何:

  1. 创建助手或者放在哪里(可能在/lib中?)
  2. 如何将此助手包含在我的主模型"if entry.title“之后

有人能指点我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-09 19:47:13

这取决于目的。如果这是一个很少改变的小列表,您可以将它放在一个常量中:

代码语言:javascript
复制
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)。然后修改匹配方法如下:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2014-02-09 19:47:30

问题是你是否需要帮手?你可以写一个非常简单的方法

代码语言:javascript
复制
["Google","IBM","Surge","Apple", "8", "100"].any? { |str| entry.include?(str) }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21663680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档