Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 模型帮助器:根据循环检查的字符串数组_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

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
我不知道如何:

  • 创建助手或将其放置在何处(可能在/lib中?)
  • 如何在我的主模型中的“if entry.title”之后包含此帮助程序

  • 有人能指导我吗?

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

    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) }
    

    这个名单现在知道了吗?为什么不将此数组作为常量包含在模型类中,然后使用验证?出于好奇,如果我必须经常添加到此列表,即列表不断增长,我会说什么方向。我修改了答案。希望这有帮助。很好,这确实是有帮助的-谢谢。