我有一个模型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
答案 0 :(得分:0)
每个Model的主键(id
)都是整数,但关联的外键在迁移中定义为字符串。 (department_id
,production_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
这将查询数据库中的第一个部门的所有职位。如果它抛出错误,则关联设置不正确。如果它返回一组位置,则该关联起作用。