簡潔にしようと思いますが、詳細が必要です。カスタム プロジェクト管理システムの (Rails での) 書き直しのプロトタイプを作成しようとしています。主な目的は、アラバマ州に移転または拡大している企業が従業員を募集、選別、および雇用するのを支援することです。現在のシステムは、ほとんどの人が聞いたことのない 4D と Active4D で動作します。ひどい DB ですが、まともなデスクトップ クライアント/サーバー システムです。
聞いたことがないかもしれませんが、彼らはアラバマ州でメルセデス、ホンダ、ヒュンダイを製造しており、これらの会社のほとんどの従業員は、このシステムを使用してこの代理店を通じて雇用されていました。大企業のほかに、この経済開発機関を使用して労働力を選択している他の多くの企業があります。プロセスは主に、従業員数 x の雇用を目標に開始されるプロジェクトです。候補者は州の市民から募集されます。候補者は、主にアプリケーション、面接、評価、トレーニング、採用など、多くの段階または段階からなる選考プロセスを経ます。各プロジェクトは異なり、いくつかのカスタム ステージがある場合があります。各段階には、何らかの方法 (オンライン申請、面接スコアシートなど) で採点される多数の評価がある場合があります。各ステージの評価が完了すると、候補者は次のステージに進みます。
現在の DB 構造は問題ありませんが、いくつかの改善を試みました。以下のモデルと関係は、現在のプロトタイプのスニペットであり、シチズンからプロジェクトへとトップダウンで進んでいます。一部のスルー リレーションは、DB 構造をよりよく理解するために追加されました。各プロジェクトには、通常はジョブベースの異なるプログラムがある可能性があることを指摘するのを忘れていました. また、この管理プロセス (イベントのスケジュール、インストラクターの管理など) を支援するモデルは他にも多数ありますが、ここには示されていません。
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
質問が来ました!ステージモデルは、候補者が次のステージに進むために選択される場所であるため、システムの重要な部分です。現在のシステムはオンライン プレゼンスの前に設計されたため、教育、スキル、職歴などの半静的な情報が明確に定義されておらず、オンライン アプリケーションの評価として追加されていませんでした。複数のプロジェクトに応募し、プロファイルの一部である情報を繰り返す必要がありました)。プロトタイプは、その情報の一部を評価したいと考えています (高校の卒業証書または GED を持っていますか?) とともに、カスタム プログラム固有の評価 (溶接の経験は何年ありますか?) とともに。
その静的な情報をスクリーニングし、それをカスタム評価スコアと組み合わせるフィルター検索を作成できると考えました。各プロジェクトは、異なる教育とスキル要件を求めている場合があります。プロジェクト/プログラムごとにカスタムスコープが必要なようです。Ransack や Squeel などを調べ始めたところですが、役立つかもしれませんが、一貫して同じフィルターを使用するかどうかはスクリーナー次第です。
フィルター アプローチの前に、私が書いた評価エンジンに機能を追加して、基本的に質問と回答として静的情報をクエリし、それをスコアリングすることを検討しました。問題は、特定の教育の成果を持っている、さまざまなスキルで特定のレベルの経験を持っている、現在の進行状況などで特定のステータスを持っているなどの市民を探し、さまざまなプログラムに合わせてカスタマイズするフィルターにどのようにアプローチするかです。 ?
もちろん、特定の答えを求めているわけではありませんが、アプローチします。