Während die Antwort von Amit Sharma funktioniert, würde ich vorschlagen, mehrere Verbesserungen dafür zu haben.
Verwenden Sie den neuen Hash-Syntax:
gender = Gender.create!(gender: 'masculine')
Verwenden find_by statt, wo/erste
category = Category.find_by(gender: gender, name: 'T-Shirt')
Verwenden Sie den Knall-Varianten, wenn sie nicht den Wert Rückkehr Überprüfung
category.subcategories.create!(name: 'Necklace')
Verwendung wenn/vorhanden? anstatt aus/leer?
if category.present?
category.subcategories.create!(name: 'Necklace')
end
(dies ist nur eine Frage des Geschmacks. Aber mein Gehirn scheint Probleme zu haben, es sei denn, Ausdrücke :-) Parsen)
Verwenden find_or_initialize_by/find_or_create_by!
Wenn Sie die Kategorie finden oder erstellen, wenn es nicht vorhanden ist, verwenden Sie find_or_initialize/find_or_create_by(), so können Sie vermeiden, die Null überprüfen:
category = Category.find_or_create_by!(gender: gender, name: 'T-Shirt')
Also insgesamt würde ich schreiben es mag:
gender = Gender.create!(gender: 'masculine')
category = Category.find_or_create_by!(gender: gender, name: 'T-Shirt')
category.subcategories.create!(name: 'Necklace')
Was ist die Frage? Übrigens ist find_by_name veraltet. – margo
können Sie versuchen, diese 'c = Category.where (Name:" T-Shirt ", Geschlecht: m.gender) .first' –
die Frage ist, wie man einen Geschlecht und Kategorie Name, um eine Unterkategorie basierend auf den Funden – jjabrams