为标记宝石模型添加after_save回调以更新轮胎索引

时间:2013-04-21 10:56:54

标签: ruby-on-rails-3 activerecord tags factory-bot tire

我的帖子模型包含使用rocket_tag gem

的标签
class Posting < ActiveRecord::Base
  attr_taggable :tags

  def tag_list
    self.tags.join(",")
  end

  def tag_list=(new_tags)
    attribute_will_change!(:tag_list)
    # split into array (comma and any spaces), ignore empties
    self.tags = new_tags.split(/,[\s]*/).reject(&:empty?)
  end

它似乎在我的开发环境中正常工作但是当我使用FactoryGirl为测试生成帖子时,它似乎没有将标记添加到搜索索引中,因此我假设这些标记在发布后被保存因此,当搜索索引更新时,它看不到任何已保存的标记,因此无法使用tire搜索它们。

我认为这意味着我需要向after_save rocket_tag模型添加Tag回调以针对发布模型调用touch(),但我不确定如何从gem扩展模型以添加这个额外的回调和方法.....除非上面的内容可能有问题。

FactoryGirl.define do
  factory :posting do
    sequence(:name)  { |m| "Posting #{m} name" }
    tag_list         "tag,another,third"
    user
  end
end

1 个答案:

答案 0 :(得分:0)

不确定为什么它不起作用但最后我用FactoryGirl.create创建了帖子,访问了发布的编辑页面,使用了capybara的fill_in来添加标签,{{1然后我刷新了搜索索引。

即我以与普通网页用户相同的方式添加标签,而不是尝试使用FactoryGirl来设置它们。