Rails没有正确加载4个fixture文件中的一个



我有一个关于rails 4 fixture的奇怪错误。

events.yml:

work:
  name: "work"
  date_start: 2015-04-21 17:20:18
  date_end: 2015-04-21 18:20:18
  comment: test comment
  admin: egor
  users: [egor]

users.yml:

egor:
  email: Egor@123.com
  encrypted_password: <%= User.new.send(:password_digest, '12345') %>
  first_name: Egor

这些yml的作品很棒。但是当我尝试加载这个文件时

events_users.yml:

one:
  user: egor
  event: work

我得到了异常

ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'user' in 'field list': INSERT INTO `events_users` (`user`, `event`) VALUES ('egor', 'work')

这是我的EventsUsers.rb模型(与其他文件类似)

class EventsUsers < ActiveRecord::Base
  belongs_to :event
  belongs_to :user
end

模型名称应该是单数,而不是复数。所以我猜Rails根本找不到User和EventsUsers之间的链接(即使是这样打字也让我头疼)。它不知道user是对象引用,因为它不将"EventsUsers"识别为与用户模型关联的有效模型。

我假设你在这里做has_many :through关系?我建议将:through选项设置为例如"user_event"(以及名为"UserEvent"的模型),或者更好的是,设置为更具描述性的选项,如"outing"(以及名称为"outing"的模型")。试着说你的领域特有的语言。

无论如何,一旦您将模型名称恢复到传统的单数形式,Rails就应该知道如何找到它,并且应该能够在fixture中自行建立连接。

相关内容

最新更新