如何解决rails pg_search关联搜索
我有3个模型
class Site
has_many :album_stats
end
class Album
has_many :album_stats
end
class AlbumStat
belongs_to :album
belongs_to :site
end
在Pg_search之前,我是这样搜索的
site = Site.first
site.album_stats.left_joins(:album).where('albums.tag LIKE ? or albums.title LIKE ?',"%#{@tag}%","%#{@tag}%")
class Album
include PgSearch::Model
pg_search_scope :search,against: %i[title tag],using: { tsearch: { dictionary: 'english',tsvector_column: 'searchable',any_word: true } }
在相册模型中搜索可以正常工作,但如何修改旧查询以通过pg_search搜索?
site.album_stats.left_joins(:album).where('albums.tag LIKE ? or albums.title LIKE ?',"%#{@tag}%")
解决方法
您可以尝试这样:
# app/models/album_set.rb
class AlbumStat
include PgSearch::Model
belongs_to :album
belongs_to :site
pg_search_scope :album_search,associated_against: { album: [:tag,:title] },using: {
tsearch: {
dictionary: 'english',tsvector_column: 'searchable',any_word: true
}
}
end
现在,您可以像这样修改查询:
site.album_stats.album_search("Your Value")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。