Tu peux essayer de garder les attributes du post dans session dans un
before_filter *avant* :authenticate_user!. Après le login tu redirect_to
new_post_url, et tu remplis le formulaire avec les données que tu as
gardées dans la session. De cette façon l'user n'aura que cliquer sur
"Envoyer" encore une fois.

class ApplicationController
  def after_sign_in_path_for(resource)
    session.delete(:return_to) || root_url
  end
end

class PostsController < ApplicationController
  before_filter :store_post_attributes_and_return_to, only: [:create]
  before_filter :authenticate_user!, only: [:create, :edit, :update,
:destroy]

  def new
    @post.attributes = session[:post_attributes]
  end

  ...

  private

  def store_post_attributes_and_return_to
    session[:post_attributes] = params[:post]
    session[:return_to] = new_post_url
  end
end

j'ai pas testé cet code, mais je crois que ça devrais fonctioner.

désolé pour mon mauvais français :D

Francis


2013/2/14 oto iashvili <[email protected]>

> salut
>
> J'utilise Devise et Cancan
>
> mon modèle
>
> class PostsController < ApplicationController
>   before_filter :authenticate_user!, only: [:create, :edit, :update,
> :destroy]
> ...
> end
>
> un utilisateur non identifié peut accéder au formulaire "new post". 
> Maintenant,
> lorsque l'utilisateur non identifié valide un  formulaire "new post" ou
> "edit post", il est redirigé vers le formulaire d'identification. Mais
> quand il se connecte, son post n'est pas enregistré dans la base de
> données. Y a t-il quelquechose à faire, comme un callback ou autre, si je
> veux que le post soit enregistré ?
>
> merci
>
> --
> --
> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
> Google Groups.
> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
> [email protected]
> Pour résilier votre abonnement envoyez un e-mail à l'adresse
> [email protected]
> ---
> Vous recevez ce message, car vous êtes abonné au groupe Google
> Groupes Railsfrance.
> Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le
> concernant, envoyez un e-mail à l'adresse
> [email protected].
> Pour plus d'options, visitez le site
> https://groups.google.com/groups/opt_out .
>
>
>

-- 
-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]
--- 
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes 
Railsfrance.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, 
envoyez un e-mail à l'adresse [email protected].
Pour plus d'options, visitez le site https://groups.google.com/groups/opt_out .


Répondre à