Какие есть варианты для литья существующих таблиц базы данных с моей моделью в рельсах? У меня есть отношение has_one и own_to между двумя таблицами, но я хотел бы объединить их и использовать их в качестве модели (и выбирать только соответствующие поля). Поскольку это внешняя таблица, я бы также хотел минимизировать количество запросов.
Я унаследовал существующее приложение и хотел бы ничего не трогать из существующей среды и медленно мигрировать. Кажется, что существующая база данных была сделана не так, как рельсы. У меня есть модель IdCard и IdCardRequest. Можно предположить, что одна IdCard имеет много IdCardRequest, однако IdCard имеет свойство для последнего IdCardRequest. Похоже, что базовая информация, такая как имя_кандидата, является свойством запроса IdCardRequest, а не IdCard. К счастью, они оба имеют общее свойство id_card_number, и я могу присоединиться к нему, основываясь на этом, указав foreign_key и primary_key для id_card_number. Однако сейчас я бы хотел модель IdCard с остальными полями IdCardRequest в качестве свойства.
class IdCard < ExternalTable
self.table_name = 'id_cards'
belongs_to :security_id_request, :foreign_key => 'request_id'
default_scope { includes(:id_request) }
end
class IdRequest < ExternalTable
self.table_name = 'id_request'
has_one :id_card, :foreign_key => 'request_id'
end
# I would like IdCard.first.applicant_lastname
# I have to call IdCard.first.id_request.applicant_lastname
# I have to call IdCard.first.id_request.applicant_firstname
# I could write a delegate_to for every property, but this seems cumbersome and inefficient.