Одна из наиболее полезных функций, которые я считаю в методе .send, заключается в том, что он может динамически вызывать метод.Это может сэкономить вам много печатать.Одним из наиболее популярных способов использования метода .send является динамическое назначение атрибутов.Например:
class Car
attr_accessor :make, :model, :year
end
Чтобы регулярно присваивать атрибуты, потребуется
c = Car.new
c.make="Honda"
c.model="CRV"
c.year="2014"
Или использовать метод .send:
c.send("make=", "Honda")
c.send("model=", "CRV")
c.send("year=","2014")
Но все это можно заменитьс помощью следующего:
Предполагая, что вашему приложению Rails необходимо назначить атрибуты вашему классу автомобилей из пользовательского ввода, вы можете сделать
c = Car.new()
params.each do |key, value|
c.send("#{key}=", value)
end