# معالجة حقول المستخدم المخصصة من كونسول Rails

**URL:** https://meta.discourse.org/t/manipulating-custom-user-fields-from-the-rails-console/218613
**Category:** Development
**Tags:** rails-console, user-custom-fields
**Created:** [17 فبراير 2022، 9:12م UTC](https://meta.discourse.org/t/manipulating-custom-user-fields-from-the-rails-console/218613 "2022-02-17T21:12:08Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [17 فبراير 2022، 9:12م UTC](https://meta.discourse.org/t/manipulating-custom-user-fields-from-the-rails-console/218613/1 "2022-02-17T21:12:08Z")

</div>

لقد استخدمت مقتطف الكود هذا لمحاولة استبدال بعض البيانات بشكل جماعي في حقل مخصص للمستخدم. استمددته من [مستورد Ning](https://github.com/discourse/discourse/blob/main/script/import_scripts/ning.rb).

```plaintext
users=User.where("users.created_at <= '2019-09-13'::timestamp")
users.each do |u|
  u.custom_fields = {"user_field_16" => "Nil"}
  u.save
end

```

ومع ذلك، كان له عواقب غير مقصودة وهي مسح القيم الأخرى للحقول المخصصة للمستخدمين.

هل يمكن لأي شخص اقتراح طريقة لتعديل قيمة حقل مخصص للمستخدم من وحدة التحكم لا تسبب الفوضى؟

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [18 فبراير 2022، 8:58ص UTC](https://meta.discourse.org/t/manipulating-custom-user-fields-from-the-rails-console/218613/2 "2022-02-18T08:58:35Z")

</div>

أعتقد أن هذا التنسيق يغير فقط الحقل المخصص المعني. لقد اختبرته لفترة وجيزة، وبدا أنه يؤدي الغرض. 👍

```plaintext
users=User.where("users.created_at <= '2019-09-13'::timestamp")
users.each do |u|
  u.custom_fields["user_field_16"] = "Nil"
  u.save
end

```

على الرغم من أنه إذا كنت تريد أن يكون الحقل NULL بدلاً من “Nil”، يمكنك تجربة هذا بدلاً من ذلك:

```plaintext
users=User.where("users.created_at <= '2019-09-13'::timestamp")
users.each do |u|
  u.custom_fields["user_field_16"] = NIL
  u.save
end

```

---

<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: [18 فبراير 2022، 10:46ص UTC](https://meta.discourse.org/t/manipulating-custom-user-fields-from-the-rails-console/218613/3 "2022-02-18T10:46:47Z")

</div>

وأيضًا شيء مثل

```ruby
UserCustomField.create(user_id: 1, name: "user_field_4",value: "Oops")

```

أوه، ولكن إذا كانت هذه القيمة موجودة بالفعل، فسيضيف قيمة أخرى! لذلك قد تحتاج إلى

```ruby
ucf=UserCustomField.find_by(user_id: name: 'user_field_4')

```

وبعد ذلك ستحتاج إما إلى تحديثها أو إنشاء واحدة جديدة.

ولكن إذا قمت بإنشاء عدة عناصر، فسيعرضها واجهة المستخدم مفصولة بفواصل، وإذا تم تعديلها عبر واجهة المستخدم عند حفظها، فسيتم حفظها مرة أخرى كقيمة واحدة.

يمكنك إلقاء نظرة عليها باستخدام

```ruby
UserCustomField.all

```

أو

```ruby
UserCustomField.where(name: x)

```

~~هذا من الذاكرة على هاتفي، لذا قد تختلف تجربتك.~~

---

<div class="post-metadata">

### Author: ![fzngagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fzngagan/32/259349_2.png) [@fzngagan](https://meta.discourse.org/u/fzngagan)
#### Post date: [18 فبراير 2022، 12:19م UTC](https://meta.discourse.org/t/manipulating-custom-user-fields-from-the-rails-console/218613/5 "2022-02-18T12:19:04Z")

</div>

> [@nathank](#):
>
> ` u.custom_fields = {"user_field_16" => "Nil"}`

بفعل هذا، فإنك تستبدل كل شيء في `u.custom_fields` بالهاش `{"user_field_16" => nil}` (لاحظ الـ nil بدون علامات اقتباس)

---

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [18 فبراير 2022، 6:44م UTC](https://meta.discourse.org/t/manipulating-custom-user-fields-from-the-rails-console/218613/6 "2022-02-18T18:44:00Z")

</div>

> [@JammyDodger](#):
>
> `u.custom_fields["user_field_16"] = "Nil"`

شكرًا لك - نعم، هذا ما كان يجب أن أستخدمه.

> [@fzngagan](#):
>
> من خلال القيام بذلك، فإنك تستبدل كل شيء في `u.custom_fields` بالهاش `{"user_field_16" => nil}` (لاحظ nil بدون علامات اقتباس)

نعم، هذا بالضبط ما حدث. شعرت بالغباء الشديد بعد ذلك!

---

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [7 مايو 2022، 1:09م UTC](https://meta.discourse.org/t/manipulating-custom-user-fields-from-the-rails-console/218613/7 "2022-05-07T13:09:17Z")

</div>

أجد هذه أداة مفيدة للحصول على بناء جملة rails الصحيح عند الرغبة في معالجة UCFs هذه في وحدة تحكم rails:

##### إذا كنت تستبدل بيانات في هذا الحقل

```plaintext
UserCustomField.find_by(user_id: =UserID=, name: "=UserFieldName=").update(value: "=NewValue=")

```

(سيؤدي ذلك إلى ظهور خطأ إذا لم تكن هناك بيانات في هذا الحقل بعد)

##### إذا كنت تملأ هذا الحقل لأول مرة

```plaintext
UserCustomField.create(user_id: =UserID=, name: "=UserFieldName=",value: "=NewValue=")

```

---

<div class="post-metadata">

### Author: ![j127](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j127/32/79093_2.png) [@j127](https://meta.discourse.org/u/j127)
#### Post date: [5 أغسطس 2022، 2:52ص UTC](https://meta.discourse.org/t/manipulating-custom-user-fields-from-the-rails-console/218613/8 "2022-08-05T02:52:31Z")

</div>

كيف قمت بإنشاء هذا المحتوى الديناميكي في المنشور؟

---

<div class="post-metadata">

### Author: ![Kuro22](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kuro22/32/261055_2.png) [@Kuro22](https://meta.discourse.org/u/Kuro22)
#### Post date: [5 أغسطس 2022، 3:01ص UTC](https://meta.discourse.org/t/manipulating-custom-user-fields-from-the-rails-console/218613/9 "2022-08-05T03:01:26Z")

</div>

يبدو أن ميتا لديها هذه المكونة قيد التشغيل. (مجرد تخمين

> [@Placeholder Forms](https://meta.discourse.org/t/placeholder-forms/113533?u=kuro22):
>
> discourse2Summary Placeholder Forms will let you build dynamic documentation, by creating a form that replaces any occurrence of a =PATTERN= in your post with the value from a text or selectable input field.eyeglassesPreview [Preview on Discourse Theme Creator](https://discourse.theme-creator.io/theme/Discourse/placeholder-forms)hammer_and_wrenchRepository Link [https://github.com/discourse/discourse-placeholder-theme-component](https://github.com/discourse/discourse-placeholder-theme-component)open_bookNew to Discourse Themes? [Beginner’s guide to using Discourse Themes](https://meta.discourse.org/t/beginners-guide-to-using-discourse-themes/91966) Install this theme component …

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [11 مارس 2023، 7:42ص UTC](https://meta.discourse.org/t/manipulating-custom-user-fields-from-the-rails-console/218613/10 "2023-03-11T07:42:49Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
