我正在开发一个从网站下载元标记并保存的应用程序。下载发生在一个名为Site
. 我想将下载的机器人元标记保存到一个名为的模型中,该模型robots_tag
通过一个名为meta_tag_sites
.
但是我在站点模型中编写的用于执行此操作的方法不起作用。当我尝试在控制台中调用该方法时,出现以下错误。
[]:ActiveRecord::Relation 的未定义方法 `robots_meta='
知道我做错了什么吗?
class Site < ActiveRecord::Base
attr_accessible :domain
belongs_to :user
has_many :meta_tag_sites
has_many :robots_tags, through: :meta_tag_sites
accepts_nested_attributes_for :robots_tags
# ...
def download_robots_meta_tags
robots_tags = Nokogiri::HTML(Net::HTTP.get(self.domain, "/")).xpath("//meta[@name='robots']")
robots_tags.each do |tag|
self.robots_tags.robots_meta = tag
end
end
# ...
end
class RobotsTag < ActiveRecord::Base
attr_accessible :robots_meta
has_many :meta_tag_sites
has_many :sites, through: :meta_tag_sites
end
class MetaTagSite < ActiveRecord::Base
attr_accessible :site_id, :meta_tag_id
belongs_to :site
belongs_to :robots_tag
end
(顺便说一句,这篇文章与之前的一篇文章有关:Web-scraping Rails App Getting Over-Modelled?)。