我希望能够在我的 Micropost 模型中进行搜索。微博具有艺术家和歌曲属性。我使用acts_as_taggable gem 标记这些微博。
微贴模型:
def self.search(search)
arel = order('created_at')
arel = arel.where('UPPER(artist) LIKE UPPER(?) OR UPPER(song) LIKE UPPER(?)', "%#{search}%", "%#{search}%").order('created_at') if search.present?
arel
end
此代码允许我搜索艺术家和歌曲,但我怎样才能搜索标签?
Micropost.find(1).tags 返回 [#ActsAsTaggableOn::Tag id: 18, name: "rock", #ActsAsTaggableOn::Tag id: 3, name: "rap"]
Micropost.find(1).tags.map(&:name) 返回一个类似 ["rock", "rap"] 的数组
我如何查询一个微博的标签,它不在它的表中,也没有艺术家和歌曲?谢谢你。
像添加另一个 where() 之类的东西?
where(self.tags.map(&:name), 'LIKE UPPER(?)', "%#{search}%")