Corto: Tengo un atributo de clave externa y quiero saber cuál es la clase (o tabla de referencia) de ese campo de clave externa.¿Cuál es la clase de una asociación basada solo en el atributo de clave externa?
Contexto:
dado 2 tablas: users(id, [other fields])
y issues(id, user_id, assigned_to, [other fields])
Aquí está mi registro activo de Emisión (partes irrelevantes se extraen)
class User < ActiveRecord::Base
...
end
class Issue < ActiveRecord::Base
belongs_to :user
belongs_to :assigned_user, :foreign_key => 'assigned_to', :class_name => 'User'
...
end
Quiero hacer un usuario puede leer el registro de cambios . p.ej. Al cambiar de usuario asignado, quiero obtener un mensaje como este: Assigned to is changed from Otto to Zoltan
. ActiveRecord tiene la función changes
, que es un buen punto de partida pero me da únicamente ID-s de referencia. Para traducir a nombres, necesito leer usuario por identificación.
Para la asociación :user
es bastante fácil porque tengo que seguir solo las convenciones. Pero, ¿cómo obtener la misma información para el atributo assigned_to
(quiero hacer una solución general)? ¿Es posible determinar si tenemos asociación para el atributo dado? ¿Podemos extraer la clase de esa asociación?
Sus enlaces a documentos no funcionan. Además, ¿hay alguna manera de obtener el espacio de nombre completo? Al igual que 'MyModule :: User' –
ah, puede hacer reflection.klass para obtener el espacio de nombres. –