有关空的belongs_to关联的最佳实践
想象一下以下情况:
我有一个dog
模型和一个house
模型。 一只狗可以属于一个房子,一个房子可以有许多狗,所以:
Class Dog < ActiveRecord::Base belongs_to :house end Class House < ActiveRecord::Base has_many :dogs end
现在,想象我也想创造没有房子的狗。 他们不属于房子。 我仍然可以使用这种关系结构,并且在创build它时根本不通知:house_id
。
有更好的做法吗?
Obs .:我用这个比喻来简化我的问题,但我的真实情况是:我有一个模型,用户可以生成它的实例。 他也可以创build这些实例的集合,但他可以将一个实例留在集合之外。
我认为这是绝对正常的做法。
对于不属于其他的模型,您可以将数据库中的值为null
house_id
。
在Rails 5中小心这个…
belongs_to是默认需要的
从现在开始,每个Rails应用程序都会有一个新的configuration选项config.active_record.belongs_to_required_by_default = true,当试图保存不存在belongs_to关联的模型时,会触发validation错误。
config.active_record.belongs_to_required_by_default可以更改为false,并保持旧的Rails行为,或者我们可以在每个belongs_to定义上禁用此validation,只需传递一个附加选项optional:true,如下所示:
class Book < ActiveRecord::Base belongs_to :author, optional: true end
来自: http : //blog.michelada.io/whats-new-in-rails-5