我有一个带有属性subcategory_list的资源模型,它是一个以逗号分隔的子类别列表。是否可以执行仅提取属于某个子类别的资源的find_by_x方法(或等效方法)?
所以如果给出:
Resource.create(subcategory_list: "Fun, Games") # resource 1
Resource.create(subcategory_list: "Fun") # resource 2
Resource.create(subcategory_list: "Games") # resource 3
当输入为“Fun”时,我需要一个查询来获取资源1和2。我只能通过以下
返回“Fun”而不是“Fun,Games”Resource.find_all_by_subcategory_list("Fun")
=> resource 2 (but not resource 1)
有没有办法修改此查询以包含“Fun,Games”?
答案 0 :(得分:2)
如果subcategory_list
是以逗号分隔的字符串:
Resource.where('subcategory_list LIKE ?', "%Fun%")
如果subcategory
是相关联的模型:
Resource.joins(:subcategories).where('subcategories.name = ?', "Fun")
答案 1 :(得分:1)
我同意MrTheWalrus,但您可能还希望acts_as_taggable_on查看Michael Bleigh。看起来你正在做的是与Resource相关联的标签,acts_as_taggable_on gem将增加很多功能,而不必编写大量额外的代码,包括你现在尝试做的事情。