Несколько таблиц базы данных в одной модели AR в Rails 3

Меня попросили создать какую-то службу отчетов (журналов). Сотрудник установил локально веб-приложение (просто какой-то динамический веб-сайт, написанный на PHP) во многих компаниях. Это веб-приложение представляет собой своего рода опрос. Все данные сохраняются в локальной базе данных, но теперь требуется, чтобы эти данные (результат опроса) также отправлялись на центральный сервер после каждой отправки формы.

Существует четыре типа опросов. Они организовали это таким образом, что существует много проектов, и каждый проект может иметь только один опрос каждого типа (здесь STI?), А опрос принадлежит одному проекту. Каждый опрос будет получать отчет из местного приложения, поэтому отчетов будет много. Приложение Rails 3, которое регистрирует эти отчеты, должно каким-то образом имитировать эту логику. Первый вопрос: имеет ли эта структура AR смысл для вас?

  Project-1--------1-Survey-1-------*-Report

  Project
    has_one :survey
    has_many :reports, :through => :survey

  Survey
    belongs_to :project
    has_many :reports

  Report
    belongs_to :survey

Второй вопрос касается наличия нескольких таблиц для одной модели AR. Если все данные будут храниться в таблице отчетов , таблица очень быстро станет огромной, и эффективный запрос отчетов, принадлежащих определенному опросу, может стать проблемой через некоторое время. Может быть, было бы лучше иметь отдельные таблицы для каждого опроса? Например, reports_ . Возможно ли это?

Кроме того, я почему-то вынужден использовать MySQL, var m = Int.MaxValue Могу ли я каким-то образом указать ELMAH вызвать нашу внутреннюю функцию дешифрования в строке подключения, которую мы ей предоставляем? Нужно ли мне изменять источник ELMAH и перестраивать?

<configSections>
  <sectionGroup name="elmah">
    <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
    <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
    <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
    <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
  </sectionGroup>
</configSections>

<elmah>
  <security allowRemoteAccess="1" />
  <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ELMAH" />
</elmah>

<connectionStrings>
  <add name="ELMAH" connectionString="EncryptedConnectionString" providerName="System.Data.SqlClient" />
</connectionStrings>

<system.webServer>
  <handlers>
    <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
  </handlers>
  <modules>
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
  </modules>
</system.webServer>
5
задан TZHX 25 May 2016 в 14:49
поделиться