splitted class into separate table activerecord

Suppose that in legacy schema,that you are working on getting
ActiveRecord to work with, you aren't keeping all the information about
user, with the user's main information in the users table, but in a
separate table.

For example:

<<table users>>
user_id
firstname
lastname

<<table auth_info>>
user_id <<PK>><<FK>>
username,
password

In my domain I wish to have User model with username,password properties
without create class model related to auth_info table and relative
association. Is there a way to do this with ActiveRecord ?

The 13/09/11, Vogon Primo wrote:

Suppose that in legacy schema,that you are working on getting
ActiveRecord to work with, you aren't keeping all the information about
user, with the user's main information in the users table, but in a
separate table.

For example:

<<table users>>
user_id
firstname
lastname

<<table auth_info>>
user_id <<PK>><<FK>>
username,
password

In my domain I wish to have User model with username,password properties
without create class model related to auth_info table and relative
association. Is there a way to do this with ActiveRecord ?

I would redefine the method_missing feature (Ruby) in the model User.
Something like

  class User
    def method_missing(sym, *args, &block)
      if (user_auth_info and user_auth_info.respond_to? name) then
        return auth_info.send(sym, *args, &block)
      else
        super
      end
    end
  end

This is NOT TESTED.

You can also use the Rails delegate feature. I know you said you didn’t want to create the the AuthInfo model but I’m not sure there’s any harm to it?

class User

has_one :auth_info

delegate :username, :username=, :password, :password=, :to => :auth_info

end

class AuthInfo

belongs_to :user

end