Rails选择列表问题

时间:2016-01-03 00:30:29

标签: ruby-on-rails forms grouped-collection-select

我有一个模型Member,它有一个新的创建表单。该表单允许用户为每个成员分配一个部门和职位。职位相对于部门而言。在应用程序的单独部分中,用户可以创建部门并创建/分配职位。我正在尝试为新成员页面创建groups_collection_select,但是我的位置没有显示,只是部门作为类别。我认为这是一个关联问题,其职位与各自的部门无关。我的位置模型中有字符串department_id,但我不认为选择能够将其作为父级读取。如果有人能指出我正确的方向,那将是非常棒的。

给出错误的行:(来自新成员form_for

<%= f.grouped_collection_select :title, Department.where(production_id: current_user.default_working_production_id).order(:department), :positions, :department, :id, :position, include_blank: true %>

我的架构如下:

create_table "departments", force: true do |t|
    t.string   "department"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "production_id"
end

create_table "positions", force: true do |t|
    t.string   "position"
    t.string   "department_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "production_id"
end

我的模特协会:

class Member < ActiveRecord::Base
    belongs_to :company
    validates :firstname, presence: true
    validates :email, presence: true
    def name
        "#{firstname} #{lastname}"
    end
end

class Department < ActiveRecord::Base
    has_many :positions
    attr_accessible :department
    validates :department, presence: true
end

class Position < ActiveRecord::Base
    belongs_to :department
    attr_accessible :department_id, :position, :department
end

1 个答案:

答案 0 :(得分:0)

每个Model的主键(id)都是整数,但关联的外键在迁移中定义为字符串。 (department_idproduction_id)。当Rails尝试建立关联时,这可能会导致问题,例如,"1" == 1计算为false。通过新迁移或通过编辑现有迁移并重置db来将外键更改为整数。

您可以确认是否已修复与rails控制台的关联:

$> rails console
Running via Spring preloader in process 20933
Loading development environment (Rails 4.2.5)
irb(main):001:0> Department.first.positions

这将查询数据库中的第一个部门的所有职位。如果它抛出错误,则关联设置不正确。如果它返回一组位置,则该关联起作用。