Rails – 使用序列化属性还是belongs_to关联?

在我的应用程序中,我有以下模型:Job和Worker。 创建作业时,会根据作业的地址为其分配位置属性(作业#位置)。

当工人填写网站的申请表时,他们应该能够指出他们感兴趣的工作地点。不知何故,我将把工人选择的地点与工作地点进行比较,并向表明该地点的工人发送通知,等等

在表单视图中,可能的位置将作为复选框呈现给申请人。 我的问题是如何将此信息存储在数据库中,因为Worker可能有兴趣在多个位置工作。 据我所知,可以序列化一个属性,使其成为一个数组。 那么我应该在Worker上有一个属性(例如Worker#location_preferences),或者我应该创建一个与Worker关联的新模型(LocationPreference),这样一个Worker has_many LocationPreferences和一个LocationPreference belongs_to一个Worker? 这可能需要在表单视图中使用嵌套表单。

上面有一个更好的Rails实践吗?

我写你在写这篇文章时回答了你自己的问题:

不知何故,我将把工人选择的地点与工作地点进行比较,并向已经指明该地点的工人发送通知

第二个你决定需要“比较”(即查询)序列化将在A $$中咬你。 去一个协会。

我建议使用一对多数据库关系并将位置存储在位置模型/位置表中。

我认为这是因为我预计不久会有位置具有其他属性,例如lat-long,description,zipcode,country,创建时,更新时等。

所有这些附加属性的潜力使得选择rails model / db模式。

可能更适合可序列化字段的属性的示例是反映简单值列表的属性的示例,例如,如果您从一组4件事物中存储当前可用的公共交通位置 – 步行,驾驶,骑自行车和飞行,这可能更适合序列化列表。 我说“可能”因为几乎任何属性都可以看到具有子属性,例如轮子数量,通过方法到达那里的时间等等。

所以在一天结束时,这真的是一个

〜这取决于〜

问题 – 答案,因为它取决于它用于什么数据和用途。 在示例中,您没有提供有关该位置的用途及其代表含义的详细信息