2012-12-08 66 views
0

我会尽量简短,但需要一些细节。我试图在一个自定义项目管理系统中重写(在Rails中)。主要目的是帮助在阿拉巴马州重新安置或扩张的公司招聘,筛选和雇用其员工。目前的系统运行在4D和Active4D上,这是大多数人从未听说过的。可怕的数据库,但体面的桌面客户端/服务器系统。基于项目模型的自定义过滤器/范围

对于那些可能没有听说过的人来说,他们在阿拉巴马州建立梅赛德斯,本田和Hyundais,这些公司的大部分员工都是通过该机构雇用的。除了大家伙之外,还有许多其他公司使用这家经济发展机构来选择他们的员工队伍。这个过程主要是一个项目开始,目标是雇用x个员工。候选人是从州公民招募的。候选人经历一个有多个阶段或阶段的选择过程 - 主要是申请,面试,评估,培训和录用。每个项目都不同,可能有一些自定义阶段。每个阶段可能有许多以某种方式评分的评估(在线申请,面试评分表等)。在每个阶段完成评估后,候选人进入下一阶段,或从项目中消除。

虽然目前的数据库结构没问题,但我们试图做一些改进。下面的模型和关系是当前原型的片段,从公民到项目的顶部。为了更好地了解数据库结构,添加了一些通过关系。我忘了指出每个项目可能有不同的程序,这些程序通常都是基于工作的。还有很多其他模型可以帮助管理过程(时间表事件,管理指导员等),这些模型没有被描述。

class Citizen < ActiveRecord::Base 
    has_one :user, :as => :loginable 
    has_many :candidates 
    has_many :educations 
    has_many :work_histories 
    has_many :skills 
end 
class Candidate < ActiveRecord::Base 
    belongs_to :program 
    belongs_to :citizen 
    has_many :progressions 
end 
class Progression < ActiveRecord::Base 
    belongs_to :candidate 
    belongs_to :stage 
    has_many :scores 
    has_one :citizen, :through => :candidate 
end 
class Stage < ActiveRecord::Base 
    belongs_to :program 
    has_many :assessors, :dependent => :destroy 
    has_many :progressions, :dependent => :destroy 
    has_many :candidates, :through => :progressions 
    has_many :citizens, :through => :candidates 
    has_many :educations, :through => :citizens 
end 
class Program < ActiveRecord::Base 
    belongs_to :project 
    has_many :stages, :order => "sequence", :dependent => :destroy 
    has_many :candidates, :dependent => :destroy 
end 

有一个问题来了!舞台模型是系统的关键部分,因为它是候选人选择进入下一阶段的地方。由于目前的系统是在在线存在之前设计的,因此半静态信息(如教育,技能,工作历史)没有明确定义,并作为在线应用程序的评估添加 - 导致静态信息的重复(Citizens申请多个项目并且必须重复作为其简介的一部分的信息)。原型仍然希望评估一些信息(您是否拥有高中文凭或GED?)以及定制程序特定评估(您有多少年的焊接经验?)。

我们认为我们可以编写过滤器搜索来筛选该静态信息并将其与自定义评估分数结合起来 - 这样做容易。每个项目可能都在寻找不同的教育和技能要求。这几乎就像我需要为每个项目/程序定制一个范围。我只是开始考虑像Ransack和Squeel这样的事情,他们可能会提供帮助,但是一直使用相同的过滤器将取决于筛选器。

之前的过滤方法,我虽然要添加一个功能,我写了评估引擎以某种方式查询静态信息基本上是一个问题和答案,并得分。问题在于,你将如何处理一个过滤器,以寻找具有特定教育成就,具有不同技能的具体经验水平,在当前进度等方面具有特定状态等等的公民,然后根据不同计划对其进行定制?

当然,我不是在寻找一个具体的答案,但方法。

+1

是的,这是**的方式**太罗嗦。祝你得到帮助;我个人不会通过*(例如,您完全可以轻松完成前两个段落)*。 – deefour

回答

0

对不起,很长的文章,但有时你必须写出你想弄清楚什么,然后再想出来!

我的解决方案最终回到了我的通用评估引擎,并编写了一个方法来评分教育和其他与公民模型相关的东西。引擎通常从问题/答案表单中得到答案。我只需要创建一个评分对象。得分是选择过滤器的一部分。

我仍然想要扩展过滤功能,并且从Ransack wiki上的一篇文章看,它看起来像创建了一个搜索对象(json?),该对象可以被捕获并可能隐藏在与项目相关的某个位置。

再一次,我为这篇长文章道歉。