Ecco un breve frammento della guida su ActionMailerActionMailer metodo di istanza viene utilizzato come metodo di classe
class UserMailer < ActionMailer::Base
default :from => "[email protected]"
def welcome_email(user)
@user = user
@url = "http://example.com/login"
mail(:to => user.email,
:subject => "Welcome to My Awesome Site")
end
end
E nel controller
class UsersController < ApplicationController
# POST /users
# POST /users.xml
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
# Tell the UserMailer to send a welcome Email after save
UserMailer.welcome_email(@user).deliver
format.html { redirect_to(@user, :notice => 'User was successfully created.') }
format.xml { render :xml => @user, :status => :created, :location => @user }
else
format.html { render :action => "new" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
end
Perché, dunque, Rails cercando di confondere la rubyist con metodi di istanza come metodi di classe? Presumo che abbiano sovrascritto il metodo mancante, ma serve solo a confondere! O mi sto perdendo qualcosa qui?
cioè perché non definire welcome_email come def sé .welcome_email (utente)
beh, allora le guide dovrebbero continuare con la creazione di una "creazione" o "consegna" anteposta al nome del metodo quando si richiama il mailer. Deprecando quelli (Rails3) in favore del pazzo vudoo, creerai pazzi sviluppatori di vudù che pensano di conoscere il rubino, ma in realtà non lo fanno. –
Hai una domanda o vuoi solo esprimere la tua opinione? ;) Sembra che tu abbia creato un argomento con una domanda retorica, che in realtà non dovresti fare e che probabilmente si chiuderà. – d11wtq
era una domanda - ma basata sulla risposta che il suo "voodoo" piuttosto che su qualche vera ragione logica - credo che sembrerebbe irrilevante. –