用户可以提交习惯、目标、价值观和统计数据的标签。
当用户单击tag_cloud中的标记时,会将其重定向到包含该标记的所有实例的主页,但由于某些原因,属于习惯的实例正在复制。
ruby-on-rails - 如何修复重复的标签?-LMLPHP
你知道这是为什么吗?
页面控制器

@habits = current_user.habits.tagged_with(params[:tag])

习惯.rb
class Habit < ActiveRecord::Base
  belongs_to :user
  acts_as_taggable
  before_save :set_tag_owner

  def set_tag_owner
    # Set the owner of some tags based on the current tag_list
    set_owner_tag_list_on(self.user, :tags, self.tag_list)
    # Clear the list so we don't get duplicate taggings (hmmm what does this mean? I copied this code & comment from somewhere else)
    # self.tag_list = nil
  end

在views/home.html.erb中:<%= render @habits %>在routes.rb中:root 'pages#home'
我试着只发布相关的东西,但这里是gist的。

最佳答案

你试过取消第行的注释吗:

self.tag_list = nil

我猜你是从this source或链接的stackoverflow问题复制过来的?
在代码注释中,您询问了以下注释行是关于什么的:
清除列表,这样我们就不会得到重复的标记
我在sources中搜索,找到了您正在调用的方法:
def set_owner_tag_list_on(owner, context, new_list)

因此,由于最后一个参数被称为new_list,我猜您交给set_owner_tag_list_on方法的旧列表将再次设置相同的标记。因此,没有所有者的旧tag_list设置为nil,因为tag_list似乎只包含没有所有者的标记(根据docs
尽管我并不认为使用这些自有标签有什么意义,因为你为每个用户创建了新的习惯,并且总是按用户过滤据我所知,acts_As_taggable_on的所有权特性仅在您拥有一个由多个用户标记的资源并且您想知道谁标记了什么时才有用在你的案例中,每个人都有自己的可标记资源。

关于ruby-on-rails - 如何修复重复的标签?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31643598/

10-10 13:06