我会尽量简短,但需要一些细节。我试图在一个自定义项目管理系统中重写(在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这样的事情,他们可能会提供帮助,但是一直使用相同的过滤器将取决于筛选器。
之前的过滤方法,我虽然要添加一个功能,我写了评估引擎以某种方式查询静态信息基本上是一个问题和答案,并得分。问题在于,你将如何处理一个过滤器,以寻找具有特定教育成就,具有不同技能的具体经验水平,在当前进度等方面具有特定状态等等的公民,然后根据不同计划对其进行定制?
当然,我不是在寻找一个具体的答案,但方法。
是的,这是**的方式**太罗嗦。祝你得到帮助;我个人不会通过*(例如,您完全可以轻松完成前两个段落)*。 – deefour