我會盡量簡短,但需要一些細節。我試圖在一個自定義項目管理系統中重寫(在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