---
title: "إضافة أنواع جديدة إلى واجهة attributes API في Rails 5"
description: "تتيح لنا واجهة attributes API في Rails 5 بناء كائنات النماذج (form objects) بسهولة كبيرة."
canonical: https://oozou.com/til/add-new-types-to-rails-5-attributes-api-13
locale: ar
date: 2020-10-13
topic: ruby-on-rails
---

# إضافة أنواع جديدة إلى واجهة attributes API في Rails 5

> تتيح لنا واجهة attributes API في Rails 5 بناء كائنات النماذج (form objects) بسهولة كبيرة.

Published: 2020-10-13 · Topic: [ruby on rails](https://oozou.com/ar/til-topics/ruby-on-rails) ([markdown](https://oozou.com/ar/til-topics/ruby-on-rails.md))

تتيح لنا واجهة attributes API في Rails 5 بناء كائنات النماذج (form objects) بسهولة كبيرة.

كنت أستخدم سابقًا callback من نوع after\_initialize لتحويل عناوين البريد الإلكتروني إلى أحرف صغيرة، أما بالكود التالي فيمكنني تعريف نوع بيانات :email، فتُحوَّل القيم تلقائيًا عند تعيينها.

وميزة ذلك أن التحويل يُطبَّق أيضًا على أي استدعاءات لاحقة لتعيين قيمة البريد الإلكتروني.

```ruby
class EmailType < ActiveModel::Type::String
  def cast(value)
    return super unless value.is_a?(String)
    super(value.downcase)
  end
end

ActiveModel::Type.register(:email, EmailType)
```

```ruby
class Foo
  include ActiveModel::Model
  include ActiveModel::Attributes

  attribute :email, :email
end
```

```ruby
> Foo.new(email: 'EMAIL@MAIL.com').email
=> 'email@mail.com'
```

---

Contact OOZOU: hello@oozou.com · +66 2544 0000 · https://oozou.com/ar/contact

More for AI agents: https://oozou.com/llms.txt · every page has a markdown twin at its URL plus ".md"
