Me gustaría tener un Tablero para mostrar el resumen de varios modelos, y lo implementé usando Presenter sin sus propios datos. Yo uso una clase ActiveModel (sin tabla de datos):Cómo pasar un argumento para delegar el método en Rails
class Dashboard
attr_accessor :user_id
def initialize(id)
self.user_id = id
end
delegate :username, :password, :to => :user
delegate :address, :to => :account
delegate :friends, :to => :friendship
end
Por delegado, quiero ser capaz de llamar a Dashboard.address
y volver Account.find_by_user_id(Dashboard.user_id).address
.
Si tablero de instrumentos era una clase ActiveRecord, entonces yo podría haber declarado Dashboard#belongs_to :account
y delegado trabajaría de forma automática (es decir, cuenta sabría debe devolver atributo de dirección de la cuenta con user_id
iguales to user_id
en la instancia del tablero de instrumentos).
Pero Dashboard no es una clase ActiveRecord, por lo que no puedo declarar belongs_to
. Necesito otra forma de decirle a la cuenta que busque el registro correcto.
¿Hay alguna manera de solucionar este problema? (Sé que puedo falsificar el Tablero para tener una tabla vacía, o puedo reescribir los métodos de instancia del Usuario para los métodos de clase que toman el argumento. Pero estas soluciones son todos pirateos).
Gracias.
Esto no tiene mucho sentido. ¿Qué es 'id'? ¿Se supone que es un número? (No puede 'enviar (" 123 ")', ese no es un nombre de método válido.) No puede usar 'Dashboard.user_id' con' attr_accessor: user_id', una es una clase y la otra es la instancia. .. Por favor aclare y dé ejemplos de cómo espera que esto funcione. –
Hola Andy, puede ser que no soy lo suficientemente claro. Tenga en cuenta que esta no es una clase ActiveRecord :: Base regular. Por lo tanto, necesito un atributo para mantener la identificación del usuario actual. (No quiero mantener esta identificación permanentemente) Por delegado, deseo poder llamar a Dashboard.address y obtener de nuevo Account.find_by_user_id (Dashboard.user_id) .address. Intenté delegar esta función en la clase de Cuenta, pero necesito pasar el valor de id_usuario a Cuenta de alguna manera, para que sepa con qué instancia de cuenta debería funcionar. – AdamNYC