我有当前(简化)模型设置 - 基本上是两个非常不同的模型:
Product
- Title
Restaurant
- Title
Comment
- Message
- gps_cords (sometimes?!)
我的目标是让人们根据以下条件随意对products
和restaurants
发表评论:
message
。message
和gps_cords
值。这些是我正在考虑的事情:
场景1:一个带有继承模型的大屁股表
class Product < ActiveRecord::Base
has_many :product_comments
end
class Restaurant < ActiveRecord::Base
has_many :restaurant_comments
end
class Comment < ActiveRecord::Base
# message -> string
# gps_cords -> string
# type -> string
end
class ProductComment < Comment
# only uses message
belongs_to :product
end
class RestaurantComment < Comment
# uses message AND gps_cords
belongs_to :restaurant
end
场景2:具有两个评论模型的“重复”工作
class Product < ActiveRecord::Base
has_many :product_comments
end
class Restaurant < ActiveRecord::Base
has_many :restaurant_comments
end
class ProductComment < ActiveRecord::Base
# message -> string
belongs_to :product
end
class RestaurantComment < ActiveRecord::Base
# gps_cords -> string
# message -> string
belongs_to :restaurant
end
对此进行建模的正确方法是:
非常感谢那些花时间阅读所有这些内容的人。
答案 0 :(得分:0)
使用单表继承(STI),如方案1中所示
这是一个更好地理解它的链接:
http://code.alexreisner.com/articles/single-table-inheritance-in-rails.html
另外,请仔细阅读Finbarr上面评论中提到的问题。