Activeadmin表单,带有自定义外键列名称

时间:2017-07-25 09:25:41

标签: mysql ruby-on-rails activeadmin

我有两个模型PersonCar,我无法在{{1}中更改名为car而非car_id的外键列的数据库架构表格。

直到现在没关系,因为我在Persons模型中使用了以下行:

Person

现在,例如,如果我尝试belongs_to :car, class_name: 'Car', foreign_key: 'car' ,则会根据此列中的Person.last.car返回Car个对象。

但问题在于Car ID,因为如果用户尝试编辑Activeadmin记录,则会假设加载当前Person并在列表中默认选择它,但它不会吨。

我的表格代码:

Car

如果我选择任何车并点击提交,我也会遇到此错误form do |f| f.inputs 'Person Details' do .... .... f.input :car .... .... end end

此外,我尝试为列创建别名,但没有运气

Car(#97670400) expected, got String(#19439720)

我正在使用alias_attribute :ca_id, :car 和最新的Rails 5.0.2

1 个答案:

答案 0 :(得分:1)

  

汽车(#97670400)预计,得到字符串(#19439720)

正如我所说,直接和简单的答案是将列名更改为car_id 推荐 )并在表单中使用它与f.input :car_id类似,但您坚持尝试为关联提供不同的(但有意义的)名称。像下面的东西

belongs_to :person_car, class_name: 'Car', foreign_key: 'car'

说明:

  • 命名冲突

您应该避免命名冲突car中的f.input :car列名称)与car中的关联名称 belongs_to :car, class_name: 'Car', foreign_key: 'car'冲突,这就是原因为错误