如何定义我的数据库关系

时间:2013-09-05 12:55:00

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我们有以下(部分)模型。

User
Booking
Apartment
Villa
Bed_Breakfast
Boutique_hotel

用户可以预订很多,预订可以有很多别墅,公寓,B&B或精品酒店。

这是我建立关系的想法。

class User 
 has_many: bookings
end

class booking
 belons_to :user
end

class Apartment
 belongs_to :booking
end

class Villa
 belongs_to :booking
end

这是正确的方法吗?

...谢谢

REMCO

3 个答案:

答案 0 :(得分:1)

我认为,你的做法并不好。似乎您在表中寻找has_many :through关联。您可以查看Rails has_many :through文档。你应该这样:

class User 
 has_many :apartments, through: bookings
end

class booking
 belongs_to :user
 belongs_to :apartment
end

class Apartment
 belongs_to :user
 has_one :booking
end

希望它会有所帮助。感谢。

答案 1 :(得分:0)

是的,一切都很好,并添加此

class booking
 belongs_to :user
 has_many :villas
 has_many :apartments
 ...
end

答案 2 :(得分:0)

别墅和公寓似乎是一回事。它们不是Property吗?您可以让Property让自己保持干燥(不要重复自己),这将消除为每个公寓/别墅编写相同的代码。我的建议如下:

class Villa < Property < ActiveRecord::Base
end 

class Apartment < Property < ActiveRecord::Base
end

或者,您可以使用多态设计并具有属性类型。