Utilisation de Rails 3.2. Je donne les résultats suivants pour l'action Mailer:Méthode d'exclamation dans la méthode du modèle Rails non trouvée lors de la transmission de l'objet
# shop.rb
class Shop < ActiveRecord::Base
def deliver_update_notification!(user)
version = self.versions(user).last
EditorMailer.updated_spot(self, version).deliver
end
end
# shops_controller.rb
class ShopsController < ApplicationController
def update
@shop = Shop.find(params[:id])
if @shop.update_attributes(params[:shop])
@shop.deliver_update_notification!(current_user)
redirect_to shop_path(@shop)
else
render 'edit'
end
end
end
D'une certaine façon quand je passe dans l'objet current_user
à la méthode deliver_update_notification!
, il renvoie une erreur disant que la méthode ne peut pas être trouvé. Si la méthode a été modifiée pour ne pas accepter d'objet, la méthode fonctionne. Pourquoi cela se comporte-t-il de cette façon?
Aussi, je ne me souviens pas pourquoi j'ai le point d'exclamation dans la méthode. Je l'ai vu de quelque part. Quel est le but du point d'exclamation?
Merci.
Le but du point d'exclamation est de désigner une action destructive (soit vous modifiez l'objet, soit vous effectuez une action qui ne peut pas être annulée). Quant à votre autre question ... Je ne sais pas, n'avez-vous pas enregistré le fichier Shop ou quelque chose? On dirait que ça devrait marcher – varatis