我有一个关于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中自行建立连接。