1

私はあなたの助けが必要な問題を抱えています:1つの属性「employee_type」を持つ1つのモデル従業員がいます。1人の従業員には1つのタイプしかありません。従業員には3つのタイプがあります(「初心者」、「普通」、「プロ」、将来的に増える可能性があります)。ですから、それを実装する方法は3つあると思います。

  1. employee_type属性は文字列型であり、「beginner」、「normal」、または「pro」です。次に、ヘルパーで、選択ボックスビューに3タイプを表示するためのメソッドを定義する必要があります。このように、不利な点は「タイプを追加したいときはいつでも、生のコードに挿入しなければならない」ということです。
  2. 「beginner」、「normal」、「pro」の3つのレコードのみを含むemployee_typeテーブルを作成します。また、employee_type属性は整数型であり、employee_typeテーブルのレコードのIDを保存します。employeeテーブルとemployee_typeテーブルには関連付けがありません。このようにすると、より多くのタイプを簡単に挿入できるという利点があります。欠点は、「従業員のタイプを検索する場合は、EmployeeType.find(employee.employee_type)を実行する必要がある」ということです。
  3. employee_typeテーブルを作成します。このテーブルはemployeeと1-1の関係にあり、has_oneを使用します。このようにして、employee.employee_typeによって従業員のタイプを簡単に見つけることができます。不利な点は、何種類の従業員を管理するのが難しいか

それらよりも良い方法はありますか?

どうもありがとうございます

4

1 に答える 1

2

これは1対多の場合です。次のスキームを使用する必要があります。

class Employee < ...
  belongs_to :employee_type

class EmployeeType < ...
  has_many :employees
于 2012-04-12T10:26:38.463 に答える