2013-03-12 4 views
0

У меня есть модель Подписки с принадлежностью к Участнику.Не автосохранение принадлежит к ассоциации

В форме подписки используются поля для создания связанных полей участника.

Также в виде радио кнопки называется «other_person».

Я хочу, чтобы НЕ сохранить связанную таблицу участников (так же не проверять), когда для поля other_person установлено значение false.

+0

Пожалуйста, разместите пример кода с тем, что вы пробовали до сих пор. – fmendez

ответ

1

я буду считать other_person это поле Subscription модели на следующем примере:

class Subscription < ActiveRecord::Base 
    before_save :remove_empty_participant 
    belongs_to :participant 

    private 

    def remove_empty_participant 
    self.participant = nil unless self.other_person 
    end 
end 

Если это не поле вашей Subscription модели, вам придется удалить атрибуты в действии контроллера:

class SubscriptionsController < ActionController 

    def create 
    params[:subscription].delete(:participant) unless params[:other_person] 
    # Save the subscription with your current params... 
    end 

end 

Надеюсь, это поможет.

+0

Спасибо, other_person действительно является полем модели Subscription. Я тоже пробовал это решение. Он работает частично, поскольку он не сохраняет ассоциированный участник_id в модели Subscription. Однако он сохраняет участника в таблице Участника. (возможно, потому, что он сначала вставляет участника, а THEN вставляет подписку) –

+0

Да, скорее всего. Чтобы получить участника_id, сначала необходимо сохранить участника. Попробовали ли вы альтернативный подход к очистке своих «параметров» до того, как они попадут в вашу модель «Subscription»? – sergelerator

+0

Да, это работает! (Хотя я использую: members_attributes) :) THANK YOU –

Смежные вопросы