如何为User模型添加属性?

我正在尝试修改一个插件。
以下代码失败并出现类似错误:

# total_points 是一个包含“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

我对 rails 非常陌生。你能告诉我哪里出错了?
非常感谢!

抱歉,这可能帮不上什么大忙,但速度很快。:slight_smile:

您期望是数组的东西却是 nil。也许 argsnil,需要变成 []

您也可以看看 GitHub - discourse/all-the-plugins 来尝试寻找您想做的事情的示例(我不太清楚您想做什么)。

看看 discourse-calendar。它添加了一个 Event 类,这似乎与您想做的事情非常相似。

不过,有很多插件都有类似的 reloadable_patch 块。

1 个赞

谢谢回复!
我刚创建了一个新表,想将该表的一个列添加到用户表中。

1 个赞

我更改了

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

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

仍然不起作用。:cold_sweat:
有人能帮帮我吗?