【问题标题】:Lab expected, got String实验室预期,得到字符串
【发布时间】:2012-08-15 21:44:18
【问题描述】:

我有案例模型。案例模型有 3 个字段作为实验室模型的 ID。
案例模型

belongs_to :lab1, foreign_key: 'lab1', class_name: 'Lab', inverse_of: :lab1, conditions: {step1: true}
belongs_to :lab2, foreign_key: 'lab2', class_name: 'Lab', inverse_of: :lab2, conditions: {step2: true}
belongs_to :lab3, foreign_key: 'lab3', class_name: 'Lab', inverse_of: :lab3, conditions: {step3: true}

在实验室模型中

has_many :lab1, foreign_key: 'lab1', class_name: 'Case', inverse_of: :lab1
has_many :lab2, foreign_key: 'lab2', class_name: 'Case', inverse_of: :lab2
has_many :lab3, foreign_key: 'lab3', class_name: 'Case', inverse_of: :lab3

并且还形成以防万一

 .lab_group
   = f.association :lab1, label: false, input_html: {'data-placeholder'=> t('step.one')}
   = f.input :lab1_delivered, label: t('case.done')
 .lab_group
   = f.association :lab2, label: false, input_html: {'data-placeholder'=> t('step.two')}
   = f.input :lab2_delivered, label: t('case.done')
.lab_group
   = f.association :lab3, label: false, input_html: {'data-placeholder'=> t('step.three')}
   = f.input :lab3_delivered, label: t('case.done')

但是当我尝试保存时,我有一个错误

Lab(#70207759169540) expected, got String(#70207716712320)

并请求参数

{"utf8"=>"✓",
 "authenticity_token"=>"G0BWY6V6tkxRt81I0ZOxKXs8RD/7cdfbZfhVfRTmboo=",
 "case"=>{"number"=>"123",
 "doctor_id"=>"1",
 "lab1"=>"1",
 "lab1_delivered"=>"0",
 "lab2"=>"2",
 "lab2_delivered"=>"0",
 "lab3"=>"2",
 "lab3_delivered"=>"0",
 "delivered"=>"0",
 "patient"=>"",
 "comment"=>"for example"},
 "commit"=>"Save"}

和屏幕

我该如何解决?

【问题讨论】:

  • 您应该显示错误所指的代码:您的 create 操作

标签: ruby-on-rails forms foreign-keys associations


【解决方案1】:

解决方案:
我的案例表中有lab1、lab2、lab3 列。但是foreign_key没有看到。我更改了 lab1、lab2 和 lab3 的名称,例如 lab1_id、lab2_id 和 lab3_id。
我从关联中删除了 foreign_key。
让我们看看。
万一模型

belongs_to :lab1, class_name: 'Lab', inverse_of: :lab1, conditions: {step1: true}
belongs_to :lab2, class_name: 'Lab', inverse_of: :lab2, conditions: {step2: true}
belongs_to :lab3, class_name: 'Lab', inverse_of: :lab3, conditions: {step3: true}

在实验室模型中

has_many :lab1, class_name: 'Case', inverse_of: :lab1
has_many :lab2, class_name: 'Case', inverse_of: :lab2
has_many :lab3, class_name: 'Case', inverse_of: :lab3

形式上

.lab_group
  = f.association :lab1, label: false, input_html: {'data-placeholder'=> t('step.one')}
  = f.input :lab1_delivered, label: t('case.done')
.lab_group
  = f.association :lab2, label: false, input_html: {'data-placeholder'=> t('step.two')}
  = f.input :lab2_delivered, label: t('case.done')
.lab_group
  = f.association :lab3, label: false, input_html: {'data-placeholder'=> t('step.three')}
  = f.input :lab3_delivered, label: t('case.done')

foreign_key 不工作 :( 是错误吗?可能是。

【讨论】:

    【解决方案2】:

    我认为您在这里使用名称 lab1、lab2、lab3 而不是 lab1_id、lab2_id、lab3_id 作为外键名称。

    【讨论】:

    • 不,我在案例表中有 lab1 列。我猜我怎么能解决它。我现在就写。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多