2014-05-12 11 views
6

Rails 4.1 app. Ich bin in der Lage, um es zu arbeiten, aber interessiert, warum es nicht funktioniert:Schienenbefestigungsbeziehung existiert nicht

# test/fixtures/notification_settings.yml 

wilmas_notification_settings: 
    user: wilma 
    checkin_comments: false 
    checkin_comments_schedule: instant 

Das funktioniert:

class NotificationSettings < ActiveRecord::Base 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_one :notification_settings 
end 

dies nicht funktioniert

# test/fixtures/notification_settings.yml 

wilmas_notification_settings: 
    user_id: wilma 
    checkin_comments: false 
    checkin_comments_schedule: instant 

Alle Dinge zeigen Es ist ein Problem mit der belongs_to, aber ich bin verwirrt.

Fehler ist:

ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column "user" of relation "notification_settings" does not exist 
LINE 1: INSERT INTO "notification_settings" ("user", "checkin_commen... 
              ^
: INSERT INTO "notification_settings" ("user", "checkin_comments", "checkin_comments_schedule") VALUES (550831404, 'f', 'instant') 

Antwort

4

Stellt sich heraus, die Pluralisierung der notification_settings wurde abgeworfen. Dies hat es behoben:

ActiveSupport::Inflector.inflections(:en) do |inflect| 
    inflect.uncountable %w(notification_settings) 
end 
+0

Können Sie auf diese Antwort in Bezug auf das ist ein Fehler in Rails 4 erweitern? Wenn ja, müsste ich die Änderungen auch dann noch vornehmen, wenn ich die Flexionsregeln nicht verwende? Im Standardcode heißt es "Diese Flexionsregeln werden unterstützt, sind aber nicht standardmäßig aktiviert" Danke. – Marklar

+0

Ich glaube nicht, dass es ein Fehler ist. Ich denke, dass es nur mit der Tatsache zusammenhing, dass der Plural in diesem Fall wegen des has_one dasselbe Wort wie der Singular war. – brandonhilkert