Falko
Falko

Reputation: 1035

Using ruby send method to create and build a new class

I have some classes that I want to call dynamiclly:

 Sms::Message::TenMinutesBeforeReminderMessage.new(data).build
Sms::Message::OneHourAfterReminderMessage.new(data).build

I want to be able to do something like this:

send("Sms::Message::#{reminder}ReminderMessage.new(data).build")

Where reminder is a symbol. Is this possible? If so I can't seem to figure out the syntax

Upvotes: 0

Views: 77

Answers (1)

rubyprince
rubyprince

Reputation: 17793

You use constantize from Rails to do it:

klass = "Sms::Message::#{reminder}ReminderMessage".constantize
klass.new(data).build

Upvotes: 5

Related Questions