如何使ActsAsTaggableOn :: Tag从Tag模型继承方法

时间:2012-08-02 17:18:30

标签: ruby-on-rails-3 acts-as-taggable-on

我正在使用act-as-taggable-on 2.0.6在Rails 3.0.9应用程序中进行标记。我已成功将db支持的属性添加到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模型继承模型方法?

3 个答案:

答案 0 :(得分:1)

您需要添加此/config/initializers/tag_monkey_patch.rb

class ActsAsTaggableOn::Tag
  def subscribable?
    !feed_url.blank?
  end
end

答案 1 :(得分: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">

答案 2 :(得分:0)

根据我的理解,你不应该像这样声明一个新的“Tag”模型,但是应该覆盖这样的类:

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