Hi,
I am trying to create a model (BatchExternalBooking) which has the
following methods:
BatchExternalBooking.message_thread_1=
BatchExternalBooking.message_thread_1
BatchExternalBooking.message_thread_2=
BatchExternalBooking.message_thread_2
… etc all the way upto
BatchExternalBooking.message_thread_x=
BatchExternalBooking.message_thread_x
I assume that I need to do this via method_missing because I don’t know
how many of these methods I will actually need.
My code currently looks like this:
class BatchExternalBooking
def method_missing(method_sym, args)
if method_sym.to_s =~ /^message_thread_([0-9])=?(\w*)?$/
BatchExternalBooking.instance_eval “attr_accessor
:message_thread_#{$1}”
self.send(“message_thread_#{$1}=”, $2)
else
super
end
end
end
However, this is not working. See below:
b = BatchExternalBooking.new
=> #BatchExternalBooking:0x3e54040b.message_thread_1 = 45
=> 45b.message_thread_1
=> “”
The value wasn’t actually set but the attr_accessor correctly created
the setter method. If I try and set the variable again, it works:b.message_thread_1 = 45
=> 45b.message_thread_1
=> 45
Why isn’t the setter working the first time round?
Thanks a lot.