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}%")