0

我在 Rails 3.0.9 应用程序中使用acts-as-taggable-on 2.0.6 进行标记。我已经成功地将 db-backed 属性添加到 Tag 模型中,例如每个标签都有一个 RSS 提要,因此我可以调用@post.tags.first.feed_url以从我的数据库中获取 feedburner URL。

但是,虽然我可以向 Tag 模型添加属性,但似乎我无法添加实例方法。我创建了实例方法:

class Tag < ActiveRecord::Base
  ...
  def subscribable?
    !feed_url.blank?
  end
  ...
end

但是当我打电话时,@post.tags.first.subscribable?我得到了错误:

NoMethodError: undefined method `subscribable?' for #<ActsAsTaggableOn::Tag:0x00000100d32290>

有没有办法告诉ActsAsTaggableOn::Tag对象从Tag模型继承模型方法?

4

3 回答 3

1

你需要添加这个/config/initializers/tag_monkey_patch.rb

class ActsAsTaggableOn::Tag
  def subscribable?
    !feed_url.blank?
  end
end
于 2013-06-26T16:32:32.543 回答
0

我想知道完全相同的事情。据我尝试,它对我不起作用..

class Tag < ActsAsTaggableOn::Tag
   def total_count
     ...
   end
end

当我以脏链形式示例调用它时,如下所示:

my_model.my_instance.tag_counts_on(:tags).first.total_count

我得到一个

undefined method `total_count' for #<ActsAsTaggableOn::Tag id: 1, name: "first">
于 2012-10-10T08:54:22.790 回答
0

据我了解,您不应该像这样声明一个新的“标签”模型,而应该像这样覆盖类:

class ActsAsTaggableOn::Tag
   def total_count
      ...
   end
end
于 2013-01-22T23:42:15.257 回答