0

我有一个带有属性 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”?

4

2 回答 2

2

Ifsubcategory_list是一个逗号分隔的字符串:

Resource.where('subcategory_list LIKE ?', "%Fun%")

如果subcategory是关联模型:

Resource.joins(:subcategories).where('subcategories.name = ?', "Fun")
于 2012-09-24T19:28:52.653 回答
1

我同意 MrTheWalrus 的观点,但您可能还想查看Michael Bleighacts_as_taggable_on。看起来您正在做的是与 Resource 相关联的标签,acts_as_taggable_on gem 将增加很多功能,而无需编写大量额外代码,包括您现在尝试做的事情。

于 2012-09-24T19:35:56.733 回答