2010-01-28 18 views
0

je les modèles suivants:Problème avec accepts_nested_attributes_for en utilisant authlogic_oauth

class Merchant 
    acts_as_authentic 
    has_one :store 
    accepts_nested_attributes_for :store 
end 

class Store 
    belongs_to :merchant 
end 

J'utilise authlogic_oauth petit bijou pour l'authentification Twitter. Pendant l'enregistrement, je sauvegarde le modèle du marchand et du magasin. Si je désactive l'authentification oauth, les deux modèles sont enregistrés. Lorsque j'active l'authentification oauth, seule l'instance Merchant est enregistrée. Après avoir passé un peu de temps à regarder le code gem authlogic_oauth, je pense avoir trouvé le coupable. La gemme authlogic_oauth stocke les attributs ActiveRecord dans la session pendant les appels oauth. Mais il ne stocke pas les attributs des associations. Je peux bidouiller le code gem mais je me demande s'il y a une meilleure solution.

Répondre

0

J'ai résolu le problème en enregistrant temporairement les attributs du magasin dans la session pendant la durée des appels Oauth. J'espère qu'il existe une meilleure façon de résoudre ce problème.

class MerchantsController < ApplicationController 
before_filter :init_nested_attr 

def create 
    @merchant = Merchant.new(params[:merchant]) 
    @merhcant.save do |result| 
    #some code 
    end 
end 

private 
def init_nested_attr 
    if session[:authlogic_oauth_attributes] 
    params[:merchant] = session[:authlogic_oauth_attributes] 
    params[:merchant][:store_attributes] = session.delete(:authlogic_oauth_store_attributes) 
    else 
    session[:authlogic_oauth_store_attributes] = params[:merchant][:store_attributes] 
    end 
end 
end