Rails - связывание базы данных/моделей с модулями, которые не являются таблицами базы данных

Я хочу создать "ассоциации" (или эквивалентную концепцию с аналогичными методами, доступными из ассоциаций). Именно с этой таблицей информации это НЕ нужно обновлять без каких-либо других таблиц, которые включают CRUD.

Это моя не обновленная таблица информации:

Table name: Personalities

 personality_type | alternate_name | CF1 | CF2 | CF3 | CF4 | CF5 | CF6 | CF7 | CF8
 ----------------------------------------------------------------------------------
 ENTj | ENTJ | Te | Ni | Se | Fi | etc | etc | |
 INTp | INTJ | (more data values)
 ISFj | ISFP | (more data values)
 ESFp | ESFP | (more data values)

Поэтому мне кажется, что сделать это не обновленным в таблицу базы данных и выполнять запросы на нем было бы глупым и бессмысленным способом разработки моего кода, поскольку это повлекло бы за собой все накладные расходы времени загрузки запроса.

Поэтому я думал о чем-то вроде отдельного модуля Ruby, но не знал, как "связать" его с другими таблицами, которые будут полнофункциональными таблицами базы данных с моделями.

1) Как связать экземпляр класса без базы данных на основе ActiveRecords :: Base с одним?

2) В каком формате/типе данных я должен поместить мою не обновленную таблицу информации? класс, модуль, несколько экземпляров класса, 2-мерный массив или 2-мерный хэш?

  • Моя цель в определении этого решения состоит в том, чтобы иметь возможность использовать аналогичные нотации метода, которые связаны с привязкой моделей баз данных. (например, две таблицы под названием "Личность" и "Пользователь" позволят использовать Rails/Ruby, например @user.alternate_name. и @personality.user.email @user.alternate_name.).

3) Отражает ли тот факт, что rails использует скрытые: id и столбцы timestamp? (Если этот вопрос немного широк, не стесняйтесь игнорировать его ответ). Большое спасибо!

Пользователь -A может иметь только один тип личности. -Other модели базы данных должны ссылаться на информацию о типе личности независимо от модели пользователя.

1 ответ

Предположительно, только модель User может иметь тип личности. Почему бы не создать массив этих типов в качестве константы в модели User, который затем можно найти в формах и т.д. Для выбора с помощью User::PERSONALITY_TYPES.

Например:

class User

 PERSONALITY_TYPES = %w{ ENTJ INTJ ISFP ESFP }

 # ... other model code
end

Затем просто сохраните индекс типа личности внутри массива как user_type_index.

Возможно, я упрощаю ваши потребности, но это тот подход, с которого я начну.

licensed under cc by-sa 3.0 with attribution.