我们有以下(部分)模型。
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
答案 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
或者,您可以使用多态设计并具有属性类型。