2013-02-18 3 views
0

Я перекрывая метод InvitationsController создать в devise_invitable исходный код которого выглядит следующим образом:Строительные абстрактные ассоциации в рубине на рельсах

def create 
    self.resource = resource_class.invite!(resource_params, current_inviter) 

    if resource.errors.empty? 
     set_flash_message :notice, :send_instructions, :email => self.resource.email 
     respond_with resource, :location => after_invite_path_for(resource) 
    else 
     respond_with_navigational(resource) { render :new } 
    end 
    end 

Я пытаюсь добавить fields_for в форме приглашения так что я могу создать некоторые объекты, связанные с элементом, когда я создаю элемент в этом контроллере. Я могу сделать это явно, добавив что-то вроде

resource.my_associations.build(params[:my_association]) 

Есть ли способ обобщить инструкцию построения? Возможно, подразумевайте имя класса из параметров и создайте ассоциацию, не зная, что это называется заранее?

ответ

1

Если PARAMS хэш содержит только ваше имя (ы) ассоциации, то вы могли бы написать что-то вроде

params.each do |association, attributes| 
    resource.send(association.to_s.pluralize).build(attributes) 
end 
Смежные вопросы