Rails如何将属性保存到数据库

时间:2015-10-13 13:20:16

标签: ruby-on-rails

我想根据用户选择的某些类别对数据进行排序。例如,如果我有House模型,用户可以检查某些类别(宠物,停车场,健身房,游泳池),并获取排序数据。 我不确定如何在表格中包含这些类别。

class CreateHouses < ActiveRecord::Migration
 def change
  create_table :houses do |t|

  t.timestamps null: false
  end
 end
end

将所有这些类别设置为具有布尔数据类型的单独列是一个好习惯吗?如果是这样,请推荐使用代码行对结果进行排序并显示。

3 个答案:

答案 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)连接。