rails模型:可以是外键null吗?

时间:2015-03-28 15:20:55

标签: ruby-on-rails activerecord

我有一个event表和一个place表。有些events属于某些places,有些则不属于placed_event。所以我决定创建另一个表:events = place属于placed_event。我的问题是:我应该这样保留它还是只有events表并删除placed_events表,以便某些null具有外键{{1}} - 即不会属于任何地方?

2 个答案:

答案 0 :(得分:1)

答案是“这取决于”。

如果事件可以在0或1个位置,那么使用带有外键表的外键的事件表将正常工作;正如穆罕默德在评论中所说,如果place_id为空,那么事件就没有了。

如果事件可以分布在多个地方,例如一个有很多阶段的音乐会,那么在拥有连接表时就会有意义。

希望有所帮助。

答案 1 :(得分:0)

如果地点为has_many个地点belongs_to个地点,您可以随时将place_id留空(nil)。并非所有(或任何)关联都必须存在(除非您明确进行验证)。当然,您应该在代码中检查这一点,这样您就不会尝试从不存在的关联中访问数据(例如,@event.place.nameplace时调用nil)。