【问题标题】:Ransack and acts-as-taggable-on issuesRansack 和作为可标记的问题
【发布时间】:2013-10-25 15:14:59
【问题描述】:

我有一个使用acts-as-taggable-on的模型具有多种分类法

class Film < ActiveRecord::Base
  attr_accessible :mood_list, :genre_list, :tag_list, :country_list
  acts_as_taggable_on :countries, :genres, :moods, :tags
end

我正在尝试让 Ransack 搜索找到具有任何情绪且完全匹配国家/地区的记录。但它会返回 0 条记录,而我有匹配的记录,请参阅:

Film.search({:moods_name_in=>['happy', 'snooze']}).result.count => 2    
Film.search({:countries_name_eq=>'USA'}).result.count => 2
Film.search({:moods_name_in=>['happy', 'snooze'], :countries_name_eq=>'USA'}).result.count => 0

它什么也不返回!!!但我肯定有一个:

>> f.countries
[#<ActsAsTaggableOn::Tag id: 13, name: "USA">]
>> f.moods
[#<ActsAsTaggableOn::Tag id: 17, name: "active">, #<ActsAsTaggableOn::Tag id: 16, name: "psyched">, #<ActsAsTaggableOn::Tag id: 15, name: "happy">]
The SQL generated is:
(3.2ms)  SELECT COUNT(DISTINCT "films"."id") FROM "films" LEFT OUTER JOIN "taggings" ON "taggings"."taggable_id" = "films"."id" AND taggings.context = ('moods') AND "taggings"."taggable_type" = 'Film' LEFT OUTER JOIN "tags" ON "tags"."id" = "taggings"."tag_id" LEFT OUTER JOIN "taggings" "country_taggings_films_join" ON "country_taggings_films_join"."taggable_id" = "films"."id" AND taggings.context = ('countries') AND "country_taggings_films_join"."taggable_type" = 'Film' LEFT OUTER JOIN "tags" "countries_films" ON "countries_films"."id" = "country_taggings_films_join"."tag_id" WHERE (("tags"."name" IN ('happy', 'snooze') AND "countries_films"."name" = 'USA'))

请帮忙!

更新:2013 年 1 月 11 日 问题应该在于正确应用洗劫谓词。 有几个相关的问题实际上没有解决。 Rails, Ransack: How to search HABTM relationship for "all" matches instead of "any"

Convert ActiveRecord habtm query to Arel

更新 看起来这个问题对于 has_and_belongs_to_many https://github.com/ernie/ransack/issues/164

来说是无法解决的事件

【问题讨论】:

    标签: activerecord arel acts-as-taggable-on has-and-belongs-to-many ransack


    【解决方案1】:

    您可以通过关联添加它,例如: class Person < ActiveRecord::Base PERSON_SEARCH_OPTIONS = :name_or_email_or_tags_name_cont end 它对我有用

    我认为这是更好的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      • 2013-04-23
      相关资源
      最近更新 更多