Мое понимание RoR, к сожалению, отсутствует. У меня есть три отношения «один-к-одному», которые я хочу поддерживать в одном представлении. У меня есть следующие модели:Основные вопросы Rails: отношения «один-к-одному»
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
Ood будет иметь либо запись в таблице Female_Trait или Male_Trait таблицы, но не оба. Мои усилия по настройке новых/создания изменений/обновлений в моем OodController не удалось. Вот пример моей ошибочной логики в 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
Какую концепцию мне не хватает?
Имеют ли женские_трайт и male_trait аналогичные атрибуты? –
Нет, я пытался сократить код примера и должен был использовать trait1 через trait4 вместо повторного использования trait1 и trait2 – littlebit