我有一小段红宝石代码,它从一个不提供设施本身的网站获取新闻。我想在视图中显示结果,但我不知道我应该在哪里存储代码的逻辑,即帮助器,模型(或lib)?
寻找关于每种选择的利弊的一些指导以及哪种选择是最合乎逻辑的。
require 'nokogiri'
require 'open-uri'
require 'json'
news = []
domain = ""
councilnews = Nokogiri::HTML(open(domain + ""))
councilnews.css('p.newsTitle').select do |article|
headline = article.text
link = domain + article.css('a').attribute('href').to_s
content = article.next_element.text
newsItem = {headline: headline, link: link, content: content}
news.push(newsItem.to_json)
end
答案 0 :(得分:2)
IMO,如果您不打算永久存储这些获取的数据,只需将这些代码保存为lib
,由控制器调用,以便视图可以访问其结果。
否则,您可以考虑将它们用作"服务"对于模型使用,您可能需要构建一个模型来构建这些数据的结构并将它们存储在数据库中以供进一步使用。
将这些代码放在哪里,/lib
目录并不重要?一个app/service
目录?两者都很好,这只是一个惯例。真正重要的是如何调用这些代码以及这些代码在业务逻辑中扮演的角色?