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

时间:2014-12-02 19:12:26

标签: ruby-on-rails ruby forms model associations

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

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

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

上面有一个更好的Rails练习吗?

2 个答案:

答案 0 :(得分:1)

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

  

不知何故,我将把工人所选择的地点与   作业的位置和向有工作人员发送通知   表明位置

你决定需要的第二个"比较" (即查询)序列化将在A $$中咬你。加入协会。

答案 1 :(得分:1)

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

我认为这是因为我预计很快就会有位置具有其他属性,例如: lat-long,description,zipcode,country,created,when update,etc。

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

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

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

〜这取决于〜

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