2 Stimmen

Grundlegende Frage zu Rails: Eins-zu-Eins-Beziehungen

Mein Verständnis von RoR ist leider nicht sehr ausgeprägt. Ich habe drei Eins-zu-Eins-Beziehungen, die ich in einer Sicht pflegen möchte. Ich habe die folgenden Modelle:

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 hat entweder einen Eintrag in der Tabelle Female_Trait oder in der Tabelle Male_Trait, aber nicht in beiden. Meine Bemühungen, die gerüstbasierten Definitionen für "new/create edit/update" in meinem OodController zu ändern, 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 fehlt mir?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X