1

我有我的 Rails 应用程序模型,它的选项很少(我认为不超过 10 个)。像 Product - Category 之类的东西,其中产品可以是 1 个或多个类别的一部分。但我认为我的类别太少,无法参与成熟的多对多结构。此外,类别列表是预定义的,几乎永远不会改变。

我认为从 sql 方面来看,这可能看起来像categories具有此类内容的字符串字段:"Fruits|Vegetables|..."

也许有人知道这种功能的预先存在的宝石,或者这样做可能没有真正的优势,我应该选择标准many-to-many

我检查了acts-as-taggable-on插件,但我认为它不太适合这项任务。

像我认为最合适的枚举宝石enumerize,但它们只允许选择单个值。

4

1 回答 1

1

目前推出了以下组合:

这个宝石: https ://github.com/pboling/flag_shih_tzu

在模型中:

class Product < ActiveRecord::Base
  KINDS =  { 1 => :fruit, 2 => :vegetable }
  include FlagShihTzu
  attr_accessible *KINDS.values
  as_flags KINDS

然后在视图中(haml):

    =form_for [@product] do |f|
      -Product::KINDS.each do |k, v|
        =f.check_box v
        =f.label v

更新:

另一个解决这个问题的宝石:https ://github.com/joelmoss/bitmask_attributes

于 2012-10-23T08:54:24.817 回答