Как настроить стиль MVC с заданным набором таблиц, используя Ruby on Rails - PullRequest
0 голосов
/ 16 сентября 2018

Предположим, я хочу внедрить систему управления ветеринарными клиниками с использованием Ruby on Rails. На картинке есть таблицы. Я понимаю, что мне нужно больше таблиц, но давайте предположим, что это все, что мне нужно. Для раздела Модель я просто реализую модель для каждой таблицы? Например таблица Customer

rails generate model Customer cust_id:integer last_name:string ... treatment_id:integer

Нужна ли модель для всех столов?

Следующее, что я хочу спросить, это какие контроллеры я реализую для чего-то подобного. Я уверен, что это очевидно, но в случае, если это не так, (P) обозначает первичный ключ, а (F) обозначает внешний ключ.

Последний вопрос: если бы я внедрил многоуровневую систему входа в систему, могу ли я извлечь любое поле, которое я хочу для определенных пользователей, независимо от того, какая это таблица? Например, может быть, офисному персоналу нужны некоторые поля в таблице Customer и все в Billing и все в Itemization table и все в Schedule, возможно ли это в рельсах? Мне действительно не нужен код, если он не нужен в вашем ответе, просто хорошее объяснение подойдет.

Vet Clinic Management System Tables Setup

1 Ответ

0 голосов
/ 16 сентября 2018

Чтобы использовать многие функции ActiveRecord (часть Rails, которая обрабатывает модели), у вас должна быть модель для каждой таблицы, с которой вы взаимодействуете. В коде модели у вас будет belongs_to для каждого отношения на стороне внешнего ключа и has_many на стороне первичного ключа. Например, ваша модель Customer может иметь:

belongs_to :animal
belongs_to :admittance
belongs_to :discharge
belongs_to :treatment

И каждая из этих четырех моделей будет иметь has_many :customers. Обратите внимание, что Rails предполагает, что ваш первичный ключ будет иметь имя id для каждой таблицы, и вам не нужно указывать его в команде генерации модели.

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

Возможно, вы захотите задать другие вопросы отдельно, но в качестве быстрого ответа:

  • Ваши контроллеры будут зависеть от того, как вы на самом деле хотите, чтобы люди взаимодействовали с сайтом. Вы можете создать модель, контроллер и все вместе, используя rails generate scaffold, но то, что он создает, может не соответствовать тому, что вы действительно хотите иметь на своем сайте.
  • ActiveRecord не контролирует, к каким полям у определенного пользователя есть доступ - он просто возвращает данные в базу данных. Насколько я знаю, в Rails нет встроенного способа сделать это, хотя могут быть и другие гемы, которые вы можете включить, если не хотите писать код самостоятельно.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...