class Program < ActiveRecord::Base
has_many :contacts
class Contact < ActiveRecord::Base
belongs_to :program
FactoryGirl.define do
factory :contact do
sequence(....
...
program_id 1 #foreign key
program #association
(byebug) contact
Contact id: 949, display_name: "Contact-3", business_phone: "1234567894", fax_number: "1234567894", created_at: "2017-03-05 00:43:24", updated_at: "2017-03-05 00:43:24", first_name: "First-4", last_name: "Last-4", middle_initial: "4", email: "[email protected]", program_id: 1193, 287g: nil, active: true, call_office_id: 4
Die program_id ist 1193 in der Kontaktdatensatz mit der Kontaktfabrik erstellt, aber die Programmtabelle hat nur vier Datensätze mit IDs 1-4. Nicht sicher, woher 1193 stammt. Zu diesem Zeitpunkt ist der rspec-Test mehr oder weniger erfolgreich. Aber sobald der folgende Validierungscode zum Kontaktmodell hinzugefügt wird, schlägt der rspec-Test fehl.firmgirl association validation
Kontakt Modell mit Verband Validierung hinzugefügt Für Programm
class ProgramValidator < ActiveModel::Validator
def validate(record)
if record.program.nil?
record.errors[:base] << "Program cannot be blank"
end
end
end
class Contact < ActiveRecord::Base
belongs_to :program
validates_with ProgramValidator
Lauf rspec jetzt beklagt, dass „Programm nicht leer sein kann“. Frage: Wie kann die Kontaktfabrik erstellt werden, um die Validierung zu erfüllen? Warum sind Assoziationen so schwierig, viel schwieriger als das Erstellen der Assoziationen in ROR. Danke fürs Lesen.