# User 모델에 속성을 추가하는 방법?

**URL:** https://meta.discourse.org/t/how-can-i-add-an-attribute-to-user-model/237348
**Category:** Development
**Created:** [8월 27, 2022, 5:27오후 UTC](https://meta.discourse.org/t/how-can-i-add-an-attribute-to-user-model/237348 "2022-08-27T17:27:48Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Alienazk](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alienazk/32/261130_2.png) [@Alienazk](https://meta.discourse.org/u/Alienazk)
#### Post date: [8월 27, 2022, 5:27오후 UTC](https://meta.discourse.org/t/how-can-i-add-an-attribute-to-user-model/237348/1 "2022-08-27T17:27:48Z")

</div>

플러그인을 수정하려고 하고 있습니다.  
아래 코드가 실패하면서 다음과 같은 오류가 발생했습니다:

 ![屏幕快照 2022-08-28 02.22.02](https://global.discourse-cdn.com/meta/original/4X/a/e/9/ae95b46cccfe504e00811fcae6fcbbdaf65c34fe.png)

```plaintext
# total_points is a sum table with column "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

```

```plaintext
 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)를 처음 접하는 초보입니다. 무엇이 잘못되었는지 알려주실 수 있을까요?  
많은 도움 부탁드립니다!

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [8월 27, 2022, 5:44오후 UTC](https://meta.discourse.org/t/how-can-i-add-an-attribute-to-user-model/237348/2 "2022-08-27T17:44:59Z")

</div>

죄송하지만 큰 도움이 되지 못할 수도 있지만, 빠릅니다. 🙂

배열이어야 할 것으로 예상되는 값이 `nil`입니다. 아마도 `args`가 nil이고 `[]`여야 하는 것일까요?

또한 [GitHub - discourse/all-the-plugins · GitHub](https://github.com/discourse/all-the-plugins) 에서 하려는 작업의 예시를 찾아볼 수도 있습니다(정확히 무엇을 하려는지는 잘 모르겠습니다).

discourse-calendar를 확인해 보세요. `Event` 클래스를 추가하는데, 이는 하려는 작업과 꽤 유사해 보입니다.

비슷한 `reloadable_patch` 블록을 가진 플러그인이 꽤 많습니다.

---

<div class="post-metadata">

### Author: ![Alienazk](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alienazk/32/261130_2.png) [@Alienazk](https://meta.discourse.org/u/Alienazk)
#### Post date: [8월 27, 2022, 5:50오후 UTC](https://meta.discourse.org/t/how-can-i-add-an-attribute-to-user-model/237348/3 "2022-08-27T17:50:01Z")

</div>

답장 주셔서 감사합니다!  
새로운 테이블을 만들고, 그 테이블의 컬럼 중 하나를 사용자 테이블에 추가하려고 합니다.

---

<div class="post-metadata">

### Author: ![Alienazk](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alienazk/32/261130_2.png) [@Alienazk](https://meta.discourse.org/u/Alienazk)
#### Post date: [8월 27, 2022, 6:41오후 UTC](https://meta.discourse.org/t/how-can-i-add-an-attribute-to-user-model/237348/4 "2022-08-27T18:41:06Z")

</div>

I change

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

```

to

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

```

still doesn’t work. 😰  
Can anyone help me?
