我有一个名为Shops的模型,其属性为brands,brands是一个文本字段,包含多个品牌。我想做的是选择所有独特的品牌,并按字母顺序显示它们
@brands = Shop.all(:select => 'distinct(brands)')
接下来该怎么办?
如果Shop#brands
可以保存多个值,例如:"rony,hoke,fike",那么我可以不情愿地建议这样做:
@brands = Shop.all(:select => 'brands').each { |s|
s.brands.split(',').map { |b|
b.strip.downcase
}
}.flatten.uniq.sort
但是,您应该认真考虑您的数据模型,以防止此类黑客行为。你可以把品牌分解成它自己的表+模型,并与Shop
建立多对多的关系。