Следующий код работает, но я не понимаю, почему.Создавать класс ruby без инициализации, но с attr_accesors?
Модель: У меня есть класс, называемый Contact, который не имеет метода инициализации (т. Е. Он наследует метод initialize от класса Object по умолчанию).
class Contact
include ActiveModel::Model
attr_accessor :name, :string
attr_accessor :email, :string
attr_accessor :content, :string
validates_presence_of :name
validates_presence_of :email
validates_presence_of :content
...
end
Контроллер: У меня есть ContactsController с методом «создать», который создает экземпляр класса Contact, проезжающих по некоторым параметрам с помощью метода "secure_params.
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
# THIS IS THE LINE THAT I DON'T UNDERSTAND
@contact = Contact.new(secure_params)
if @contact.valid?
@contact.update_spreadsheet
UserMailer.contact_email(@contact).deliver
flash[:notice] = "Message sent from #{@contact.name}."
redirect_to root_path
else
render :new
end
end
private
def secure_params
params.require(:contact).permit(:name, :email, :content)
end
end
Где эти параметры идут к тому, если не существует никакого метода инициализации, который устанавливает их переменные экземпляра и поведение по умолчанию «нового» метода (унаследованный от класса Object в Руби) ничего не делает с передается в параметрах?
Почему они в конечном итоге устанавливаются как переменные экземпляра? (что-то делать с attr_accesors?)
Отлично! Спасибо за ответ! –