Ruby on rails Rails:表名中的下划线会混淆设备

Ruby on rails Rails:表名中的下划线会混淆设备,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我有一个rails应用程序,有3种型号,OrderItem、Photo和PhotoSize 从schema.rb中,这是我的表order\u item(我在这里删除了不相关的列): “生成夹具”文件如下所示: one: order: one photo_size: one photo: one two: order: two photo_size: two photo: two 现在运行我的测试,我得到了错误 ActiveRecord::Fixture::Fixtur

我有一个rails应用程序,有3种型号,
OrderItem
Photo
PhotoSize

从schema.rb中,这是我的表
order\u item
(我在这里删除了不相关的列):

“生成夹具”文件如下所示:

one:
  order: one
  photo_size: one
  photo: one

two:
  order: two
  photo_size: two
  photo: two
现在运行我的测试,我得到了错误

ActiveRecord::Fixture::FixtureError:表“order\u items”没有列 命名为“照片大小”

现在夹具中有
photo
,表中有相应的
photo\u id
就可以了
photo\u size
及其相应的
photo\u size\u id
会抛出一个错误。有人能解释这种差异吗?如何解决这个问题


我试着建议添加一个关于如何使照片大小多元化的声明,但这并没有解决问题。注释出夹具文件会像预期的那样自然地停止错误。

在您的
订单项
模型中是否有
所属的:照片大小

关联的标签引用只对
所属的关联起作用,因为它取决于外键,它位于声明
属于
关联的类上

在fixture中指定外键可能非常脆弱,更不用说难以阅读了。由于活动记录可以从其标签中找出任何设备的ID,因此可以按标签而不是ID指定FK

:

在具有外键的模型中,始终使用
#belient_to
关联


不,我有一个:照片大小应该是属于你的-那是你的问题。
属于\u
属于外键列所在的任何型号。是的,有时它没有意义(有时它没有意义的事实表明您将fkey放在了错误的表中:)
one:
  order: one
  photo_size: one
  photo: one

two:
  order: two
  photo_size: two
  photo: two