¿Cómo puedo añadir un atributo al modelo User?

Estoy intentando modificar un plugin.
El siguiente código falló y arrojó un error como:

#  total_points es una tabla de suma con la columna "total_earned_points".
module MyModel::UserExtension
  def self.prepended(base)
    base.has_many :user_points, class_name: 'MyModel::UserPoint'
    base.has_one :total_point, class_name: 'MyModel::TotalPoint'
  end
end
 reloadable_patch do |plugin|
    User.class_eval { prepend MyModel::UserExtension }
  end

 add_to_class(:user, :total_earned_points) do
    # self.user_points.sum(:reward_points)
    self.total_point[:total_earned_points]
  end

Soy muy nuevo en rails. ¿Podrías decirme qué está mal?
¡Muchas gracias!

Lo siento, esto podría no ser de mucha ayuda, pero es rápido. :slight_smile:

Algo que esperas que sea un array es nil. ¿Quizás args es nil y necesita ser []?

También puedes echar un vistazo a GitHub - discourse/all-the-plugins para intentar encontrar ejemplos de lo que intentas hacer (no puedo decir exactamente qué intentas hacer).

Echa un vistazo a discourse-calendar. Añade una clase Event, que parece bastante análoga a lo que intentas hacer.

Sin embargo, hay un montón de plugins que tienen un bloque reloadable_patch similar.

1 me gusta

¡Gracias por responder!
Acabo de crear una nueva tabla y quiero agregar una de las columnas de la tabla a la tabla de usuario.

1 me gusta

Cambio

add_to_class(:user, :total_earned_points) do
    # self.user_points.sum(:reward_points)
    self.total_point[:total_earned_points]
end

a

add_to_class(:user, :total_earned_points) do
    # self.user_points.sum(:reward_points)
    self.total_point.read_attribute(:total_earned_points)
end

y todavía no funciona. :cold_sweat:
¿Alguien puede ayudarme?