我想根据用户选择的某些类别对数据进行排序。例如,如果我有House模型,用户可以检查某些类别(宠物,停车场,健身房,游泳池),并获取排序数据。 我不确定如何在表格中包含这些类别。
class CreateHouses < ActiveRecord::Migration
def change
create_table :houses do |t|
t.timestamps null: false
end
end
end
将所有这些类别设置为具有布尔数据类型的单独列是一个好习惯吗?如果是这样,请推荐使用代码行对结果进行排序并显示。
答案 0 :(得分:0)
你是完全正确的。选中标记将具有布尔数据类型,因为它们的值可以是true或false。代码看起来像这样。
class CreateHouses < ActiveRecord::Migration
def change
create_table :houses do |t|
t.pet :boolean
t.parking :boolean
t.gym :boolean
t.pool :boolean
t.timestamps null: false
end
end
end
答案 1 :(得分:0)
尝试这个(添加默认值将在以后方便您的任务):
class CreateHouses < ActiveRecord::Migration
def change
create_table :houses do |t|
t.pet :boolean, default: false
t.gym :boolean, default: false
t.price :float
t.timestamps null: false
end
end
end
如果您希望使用pet = true
查找所有房屋,请执行House.where(:pet => true).order(:price)
答案 2 :(得分:0)
考虑到您的列表可能会增长或有用户生成的类别,您可以尝试标记,而不是将booleans添加到house类。
结帐acts_as_taggable_on。如果这太多了,你总是可以用类似的模式编写自己的模式:标签和房屋通过连接表(house_tags)连接。