Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 如何使actsastaggaleon::Tag从标记模型继承方法_Ruby On Rails 3_Acts As Taggable On - Fatal编程技术网

Ruby on rails 3 如何使actsastaggaleon::Tag从标记模型继承方法

Ruby on rails 3 如何使actsastaggaleon::Tag从标记模型继承方法,ruby-on-rails-3,acts-as-taggable-on,Ruby On Rails 3,Acts As Taggable On,我在Rails 3.0.9应用程序中使用2.0.6上的acts as taggable进行标记。我已经成功地将db支持的属性添加到标记模型中,例如,每个标记都有一个RSS提要,因此我可以调用@post.tags.first.feed\u url从我的数据库中获取feedburner url 但是,虽然我可以向标记模型添加属性,但似乎无法添加实例方法。我创建了实例方法: class Tag < ActiveRecord::Base ... def subscribable?

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

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

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

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

我想知道完全相同的事情。就我所知,它对我不起作用

class Tag < ActsAsTaggableOn::Tag
   def total_count
     ...
   end
end
我得到一份工作

undefined method `total_count' for #<ActsAsTaggableOn::Tag id: 1, name: "first">
未定义的方法“总计数”#

据我所知,您不应该像这样声明一个新的“标记”模型,而应该像这样重写类:

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

您需要添加此
/config/initializers/tag\u monkey\u patch.rb

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

你的答案看起来是可行的,但当我用
类ActsAsTaggableOn::Tag
替换
类标记
时,我仍然得到了我添加的实例方法的未定义方法,如上所述。你在哪里重写该类?您可以尝试将其放入初始值设定项中,以确保它在服务器启动时得到应用。我需要标记模型(以及控制器、视图等),以便用户可以编辑标记,以便添加我前面提到的feed_url属性。正是在模型中,我用
类ActsAsTaggableOn::Tag
类ActsAsTaggableOn::Tag
替换了
类标记
,这两种方法都不允许我将实例方法附加到ActsAsTaggableOn::Tag对象。我认为ActsAsTaggable不会在Models目录中查找类,因此,您应该将它添加到初始值设定项中,以确保它在启动时得到应用。
class ActsAsTaggableOn::Tag
   def total_count
      ...
   end
end
class ActsAsTaggableOn::Tag
  def subscribable?
    !feed_url.blank?
  end
end