我的帖子模型包含使用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
答案 0 :(得分:0)
不确定为什么它不起作用但最后我用FactoryGirl.create
创建了帖子,访问了发布的编辑页面,使用了capybara的fill_in
来添加标签,{{1然后我刷新了搜索索引。
即我以与普通网页用户相同的方式添加标签,而不是尝试使用FactoryGirl来设置它们。