下面是这种情况:我有一个Category模型,需要有一个属性,用户可以从3-4个预定义的值中选择多个项目(这意味着我只能添加更多,管理员不能,所以没有单独的模型那3-4个选项) .
枚举会很棒,但有了这个,只能选择一个选项 . 由于我使用Postgres,我正在考虑使用数组类型属性来存储选定的值 .
是否有更简单,更有效的方法来执行此操作或其他我不知道的字段类型?
更新(我选择做什么):
Migration (Postgres 9.3): add_column:categories,:settings,:string,array:true,default:'{}'
Controller: 已将 :settings => []
添加到允许的参数中 .
View: <%= f.select :settings, %w[a b c], {}, :multiple => true %>
因此,如果我想获得设置'a'的所有类别,那么我做:
Category.where("'a' = ANY (settings)")
1 回答
您可以serialize your field将值保存为数据库中的数组或哈希值 . 首先,您必须通过创建迁移在类别表中添加字段
在模型中告诉rails将其用作可序列化字段