在这种情况下我应该有多少列?

Lea*_*RoR 1 model-view-controller ruby-on-rails

这是关于处理模型字段的一般问题,只是想知道这是否是正确的方法.假设我有模型House,用户可以选择10种功能:

Swimming Pool
Hot Tub
Tennis Court
Boat Parking
Horse Facilities
Balcony
Pets Allowed
Energy Efficient
Lease Option
Disability Features
Run Code Online (Sandbox Code Playgroud)

这意味着我必须制作10个布尔列吗?我从未使用过如此多的表格列,所以我不确定.拥有这么多是正常的做法吗?

谢谢.

MrD*_*anA 6

另一种选择是拥有一个名为HouseOptions(或任何你喜欢的)的表,然后是一个名为UserHouseOptions的连接表.

AR关系看起来像:

# user.rb
has_many :user_house_options
has_many :house_options, :through => :user_house_options

# user_house_options.rb
belongs_to :user
belongs_to :house_options

# house_options.rb
has_many :user_house_options
has_many :users, :through => :user_house_options
Run Code Online (Sandbox Code Playgroud)

那么,用户没有额外的列.它只是通过AR关系连接表.用户住宅选项将包含两列:user_id和house_options_is.然后House Options只有字符串列("游泳池"等),它只是一个参考表.

有关has_many:通过关系(和示例代码)的更多信息,请查看此Rails指南:http: //guides.rubyonrails.org/association_basics.html#the-has_many-through-association

  • 是这样做的.通过一个单独的模型来管理房屋功能,当您使用直升机停机坪在路上添加房屋时,您将会很好.您只需在应用程序中添加直升机停机坪,而不是在房屋模型中添加新列. (2认同)