Мне бы хотелось иметь ряд динамических атрибутов для модели пользователя, например, телефон, адрес, почтовый индекс и т. Д., Но я не хотел бы добавлять каждый из них в базу данных. Поэтому я создал отдельную таблицу с именем UserDetails
для пар ключ-значение и belongs_to :User
.
Есть ли способ как-то сделать что-то динамическое, подобное этому user.phone = "888 888 8888"
, которое по сути вызывает функцию, которая делает:
UserDetail.create(:user => user, :key => "phone", :val => "888 888 8888")
и затем получите соответствующий получатель:
def phone
UserDetail.find_by_user_id_and_key(user,key).val
end
Все это, кроме ряда атрибутов, таких как телефон, почтовый индекс, адрес и т. Д., Без произвольного добавления тонны геттеров и сеттеров?