2013-12-13 45 views
0

我对什么是落实在招聘应用中的以下功能的最佳方式有点糊涂:的has_many通过,VS belongs_to的

所有用户都必须填写1“common_application_form”。

在常见的应用形式,会有像毕业一年的选项,首选行业的多选料单,一份简历附件等

所有用户将能够通过他们的问题的答案进行过滤。即2005年毕业的任何人,更喜欢从事销售工作。

我想可能有这样做的2种方式 -

选项1:用户HAS_ONE common_app

在普通的应用程序,创建grad_year:整数,pref_industries:字符串,等等。

然后通过这样的筛选 - >

User.includes(:common_app).where('common_app.grad_year = 2005') 

这样做的缺点是,我不是S我将如何为行业工作制定多选题。数据类型是字符串?过滤如何工作?

选项2的has_many通过common_app

选项2可以是某种通过关联的has_many的,经由common_app模型。我认为这可能是最好的方式,但是我对has_many关联有点困惑,并且在构建数据库时遇到了困难。

在你看来,你会选择1,如果是的话,你会如何处理multiselect选项?

如果选项2,你会怎么做?

和当然,也许我在错误的道路,在这种情况下,让我知道我完全:P

回答

0

选项1对我来说很有意义。

对于首选的行业,我将它看作是用户和行业列表(UserIndustry模型)之间的联接。

如果您想要对其应用属性(例如优先级或优先级的强度),则用户和行业将同时拥有属于它们的has_many UserIndustry和行业和用户通过UserIndustry相互has_many。

+0

非常酷。在这种情况下,我会选择大多数不是多选选项的common_app模型的选项列表,而是将那些多选作为many_to_many关系的选项分开。我理解正确吗? –

1

大卫的答案是正确的,你可以看看这个截屏:http://railscasts.com/episodes/17-habtm-checkboxes-revised?view=asciicast

我犯了这样的一个应用程序几次,但有许多,多重选择和选择的答案。我采取了制作一个叫做选项的模型的方法name:stringgroup:integer等...

在期权模型我:

def self.by_group(group_number) 
    where(:group => group_number) 
end 

而且我可以提取选项集合与例如options.by_group(1)构建表单。