0

私はいくつかのウェブスクレイピングを行うアプリに取り組んでいます。サイトモデルでは、次の方法があります。

  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

サイトモデルには、robots_tag_sitesと呼ばれる結合テーブルを介して多くのrobots_tagsがあります。サイトモデルは、:robots_tagsのaccepts_nested_attributes_forも受け入れます。上記のメソッドは、メソッドの1行目でダウンロードされたすべてのタグを取得し、robots_tagsテーブルのtags列に保存することを目的としています。

問題は、「self.robots_tags」が1つの個別の物ではなく、物のコレクションを取得していることだと思います。しかし、タグを正しく追加する方法がわかりません。何かアドバイス?

(ところで、これらは別の投稿からのフォローアップです、Railsアプリはモデル間の保存に問題があります

4

1 に答える 1

5

を使用self.robots_tags.create(...)して新しいRobotTagオブジェクトを作成する必要があります。

RobotTagに属性があるとすると、次のtagようになります。

downloaded_tags.each do |t|
  self.robot_tags.create(:tag => t)
end
于 2012-06-22T18:24:03.387 に答える