0

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

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

这是正确的方法吗?

谢谢...

雷姆科

4

3 回答 3

1

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

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

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

于 2013-09-05T13:14:56.427 回答
0

是的,一切看起来都很好,然后添加这个

class booking
 belongs_to :user
 has_many :villas
 has_many :apartments
 ...
end
于 2013-09-05T13:03:34.033 回答
0

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

class Villa < Property < ActiveRecord::Base
end 

class Apartment < Property < ActiveRecord::Base
end

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

于 2013-09-05T13:13:03.977 回答