0

Ich versuche, ein untergeordnetes Modell automatisch zu erstellen, wenn das übergeordnete Element erstellt wird, wie unter this post angegeben. Sagen wir, ich habe zwei Modelle Personhas_one :folder und ich möchte einen Ordner erstellen, wenn die Person erstellt Um dies zu tun gehe ich in das Person Modell und (aus dem obigen Beispiel) tun Sie Folgendes.Attribute beim automatischen Erstellen von has_one Kindmodell festlegen

has_one :folder 
before_create :build_default_folder 

private 
def build_default_folder 
    build_folder 
    true 
end 

Das macht Sinn, aber sagen Profile hatte einige Attribute, die Ich mag würde ein Attribut für Folder setzen, basierend auf der Person ‚s Attribute. Wenn die Person :person_name hat, was soll ich tun, um :folder_name als "[person_name] 's_Folder" zu setzen?

Vielen Dank für Anregungen.

Antwort

1

Sie können ein übergeordnetes Attribut aus dem Kindmodell zuzugreifen:

class Profile < AR::Base 
    has_one :folder 
    before_create :build_default_folder 

    private 
    def build_default_folder 
     build_folder(folder_name: person_name) 
     true 
    end 
end 

Lesen Sie die Dokumentation für Active Record Associations.

+0

Danke für die Antwort. Wenn das im Personenmodell wäre, wäre das nicht 'build_folder (folder_name: self.person_name)'? Oder irre ich mich? – neanderslob

+1

Ja, mein Fehler, Sie können sowohl 'self.person_name' als auch' person_name' verwenden. –

+0

Cool, danke! – neanderslob