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

时间:2014-09-26 11:28:54

标签: ruby-on-rails testing fixtures minitest

我对rails 4 fixtures有一个奇怪的错误。

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

1 个答案:

答案 0 :(得分:1)

模型名称应该是单数,而不是复数。所以我猜测Rails根本无法在User和EventsUsers之间找到一个链接(这会伤害我的头脑甚至类似的那样)。它不知道user是一个对象引用,因为它不能识别&#34; EventsUsers&#34;作为与用户模型关联的有效模型。

我假设你在这里做has_many :through关系?我建议将:through选项设为例如&#34; user_event&#34; (以及名为&#34; UserEvent&#34;的模型),或者更好的是更具描述性的东西,例如&#34; outing&#34; (以及名为&#34; Outing&#34;的模型)。尝试说出您所在域独有的语言。

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