Forum: Ruby on Rails Kernel#send behaving strangely with ActiveRecord attribute methods

2ab31489a58f527712d75f36c446a465?d=identicon&s=25 Marcelo de Moraes Serpa (Guest)
on 2012-05-22 04:37
(Received via mailing list)
I'm going through an weird behavior with Kernel#send and *I think* it
might
be related to ActiveRecord (I'm using Rails 2.3.11).

I have a User model that has the following fields:
  email: String
  status: Integer

(among others)

If I do:

some_arg_that_might_come_in_a_local_var = true
method = 'email'
@user.send(method,some_arg_that_might_come_in_a_local_var)
=> 'user@email.com'

So, email doesn't expect the additional var (it's an AR accessor AFAIK,
so
it should not accept any args), but it doesn't throw the ArgumentError
exception.

The some_arg_that_might_come_in_local_var is an argument that will be
passed to certain methods that DO accept a second boolean argument, but
it
happens that sometimes the method argument sent to send can be email or
status.

But if I do:
some_arg_that_might_come_in_a_local_var = true

@user.send(method,some_arg_that_might_come_in_a_local_var)
ArgumentError: wrong number of arguments (1 for 0)

I then get the exception.

Any ideas?

Cheers,

- Marcelo.
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.