Rails模型不相互交谈.不确定如何将记录添加到另一个模型中

Ben*_*ney 0 ruby ruby-on-rails

我正在开发一个可以进行网页抓取的应用程序.在网站模型中,我有这个方法:

  def download_meta_tags
    downloaded_tags = Nokogiri::HTML(Net::HTTP.get(self.domain, "/")).xpath("//meta[@name='robots']")
    downloaded_tags.each do |t|
      self.robots_tags.tag << t
    end
  end
Run Code Online (Sandbox Code Playgroud)

站点模型通过名为robots_tag_sites的连接表有许多robots_tags.网站模型还接受了_nested_attributes_for:robots_tags.上述方法旨在获取在方法的第1行中下载的所有标记,并将它们保存到robots_tags表的tags列中.

我认为问题在于"self.robots_tags"仍然会抓取一系列东西而不是一个单独的东西.但我不确定如何正确添加标签.有什么建议?

(顺便说一句,这些是另一篇文章的后续内容,Rails应用程序在模型间保存方面存在问题)

mea*_*gar 5

您应该self.robots_tags.create(...)用来创建一个新RobotTag对象.

假设你RobotTag有一个tag属性,它可能看起来像这样:

downloaded_tags.each do |t|
  self.robot_tags.create(:tag => t)
end
Run Code Online (Sandbox Code Playgroud)