接下来的情况: 我有一个分类模型,需要有一个属性,用户可以从3-4个预定义的值中选择多个项目(意味着我只能添加更多,管理员可以' t,因此这些3没有单独的模型-4选项)。
Enum会很棒,但有了这个,只能选择1个选项。 由于我使用Postgres,我正在考虑使用数组类型属性来存储选定的值。
是否有更简单,更有效的方法来执行此操作或其他我不知道的字段类型?
更新(我选择做什么):
迁移(Postgres 9.3): add_column:categories,:settings,:string,array:true,default:' {}'
控制器:
已将:settings => []
添加到允许的参数中。
查看: <%= f.select :settings, %w[a b c], {}, :multiple => true %>
所以,如果我想让所有类别设置&#39; a&#39;然后我出现了:
Category.where("'a' = ANY (settings)")
答案 0 :(得分:1)
我正在考虑使用数组类型属性来存储选定的值。
您可以serialize your field
将值保存为数据库中的数组或哈希值。首先,您必须通过创建迁移
class some_migration
def change
add_column :categories, :some_field, :text
end
end
在模型告诉rails中将其用作可序列化字段
class Category < ActiveRecord::Base
serialize :some_field, Array
end
#this will allow you to do something like this:
category = Category.create(some_field: [some_value_1,some_value_2])
Category.find(category.id).preferences # => [some_value_1, some_value_2]