Mein Verständnis von RoR fehlt leider. Ich habe drei Eins-zu-Eins-Beziehungen, die ich in einer Ansicht beibehalten möchte. Ich habe folgende Modelle:Basic Rails Frage: One-to-One-Beziehungen
class Ood< ActiveRecord::Base
has_one :female_trait
has_one :male_trait
end
class Female_Trait < ActiveRecord::Base
belongs_to :ood
end
class Male_Trait < ActiveRecord::Base
belongs_to :ood
end
Ein Ood entweder einen Eintrag in der Tabelle Female_Trait oder Male_Trait Tisch haben würde, aber nicht beides. Meine Bemühungen, die gerüsteten new/create edit/update-Definitionen in meinem OodController zu optimieren, waren nicht erfolgreich. Hier ist ein Beispiel für meine fehlerhafte Logik in OodController:
def new
@ood = Ood.new
@female_trait = Female_trait.new
@male_trait = Male_trait.new
...
end
def create
@ood = Ood.new(params[:ood])
if !params[:female_trait][:trait1].blank? and !params[:female_trait[:trait2].blank?
@female_trait = @ood.female_trait.build(params[:female_trait])
if !params[:male_trait][:trait1].blank? and !params[:male_trait[:trait2].blank?
@male_trait = @ood.male_trait.build(params[:male_trait])
...
end
Welches Konzept, das ich fehle?
Haben female_trait und male_trait ähnliche Attribute? –
Nein, ich habe versucht, meinen Beispielcode zu verkürzen und sollte trait1 bis trait4 verwenden, anstatt trait1 und trait2 wiederzuverwenden. – littlebit