2016-04-22 3 views
1

Ich möchte sicherstellen, dass mein Staff Objekt nicht speichern kann, ohne dass Profile erstellt wird.Wie verbiete ich das Speichern von Objekten, außer die Zuordnungen sind festgelegt?

Gibt es eine Validierung, die ich einstellen kann, um dies zu erreichen?

Staff.rb:

class Staff < ActiveRecord::Base 
    has_one :profile 
end 

Profile.rb:

class Profile < ActiveRecord::Base 
    belongs_to :staff 
end 
+0

Suchen Sie http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#method-i-validates_associated? – eugen

+1

Validate_associated erzwingt keine Anwesenheit tho. – donkey

Antwort

4

Verwenden validations (es funktioniert mit dieser Vereinigung):

class Staff < ActiveRecord::Base 
    has_one :profile 

    validates :profile, presence: true 
end 

Oder einfach:

validates_presence_of :profile 
+0

Muss ich anders machen, wenn es 'has_many' ist? Bitte geben Sie ein Beispiel bitte? – donkey

+0

@oasisweng, Validierung wird die gleiche sein wie in Antwort (wird bedeutet, dass Präsenz mindestens 1 Attribut) – Ilya

+0

ich sehe, danke! – donkey

Verwandte Themen