【问题标题】:rails association has one铁路协会有一个
【发布时间】:2012-04-12 10:09:11
【问题描述】:

我有麻烦需要您的帮助: 有 1 个具有 1 个属性“employee_type”的模型员工。一名员工只有一种类型。员工有 3 种类型(“初学者”、“普通”、“专业”,未来可能会增加)。所以我认为有3种方式来实现它。

  1. employee_type 属性是字符串类型,它是“初学者”,或“普通”,或“专业”。然后在助手中,我需要在选择框视图中定义显示 3 类型的方法。使用这种方式,缺点是“每当我想添加更多类型时,我必须插入原始代码”
  2. 创建employee_type 表,其中只有3 条记录“beginner”、“normal”、“pro”。而employee_type属性为整型,保存employee_type表记录的id。 employee 表和employee_type 表没有任何关联。用这种方式,优点是容易插入更多类型。缺点是“如果我想查找员工类型,我必须运行 EmployeeType.find(employee.employee_type)”
  3. 创建employee_type 表,它与employee 有1-1 关系并使用has_one。通过这种方式,优势很容易通过employee.employee_type 找到员工类型。缺点是很难管理多少类型的员工

还有比他们更好的方法吗?

非常感谢

【问题讨论】:

    标签: ruby-on-rails associations


    【解决方案1】:

    这是一对多的情况。您必须使用以下方案:

    class Employee < ...
      belongs_to :employee_type
    
    class EmployeeType < ...
      has_many :employees
    

    【讨论】:

    • 这只是一对一的关系。一名员工只有一种类型
    • 没有。一名员工有一种类型,但一种类型可能与许多员工相关联。
    • 哦,我理解你的想法。所以我需要添加employee_type_id 并使employee_type 和employee 的关系为1-n。非常感谢你,谢谢你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多