Oto krótki fragment z przewodnika na ActionMailerActionMailer metoda instancji używany jak metody klasy
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
iw sterowniku
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
Więc dlaczego Rails próbuje zmylić rubyist z metod instancji jako metody klasowe? Zakładam, że zastąpili brakującą metodę, ale to tylko pomylenie! Czy może czegoś tutaj brakuje?
czyli dlaczego nie definiują welcome_email jako def siebie .welcome_email (użytkownik)
Cóż, wtedy szyny powinny być kontynuowane z opcją "create" lub "deliver" dodaną do nazwy metody podczas wywoływania programu mailer. Wycofanie tych (Rails3) na korzyść zwariowanego vudoo ma na celu stworzenie zwariowanych programistów vudoo, którzy myślą, że znają ruby, ale tak naprawdę to nie robią –
Masz pytanie lub po prostu chcesz wyrazić swoją opinię? ;) Wygląda na to, że stworzyłeś temat z pytaniem retorycznym, którego tak naprawdę nie powinno się robić i prawdopodobnie zostanie zamknięty. – d11wtq
było to pytanie - ale na podstawie odpowiedzi, że jego "voodoo", a nie jakiś prawdziwy logiczny powód - myślę, że to wygląda na nieistotne. –