У меня есть приложение Rails, которое будет располагаться поверх устаревшей базы данных с некоторыми ужасными таблицами, с которыми мне приходится иметь дело.Одним из них является таблица feature_attributes
, связанная с features
.Проблема в том, что эта таблица feature_attributes
не имеет первичного ключа.Я не думаю, что это будет проблемой, но, очевидно, это так.У меня есть название моей модели, которое отличается от имени таблицы, но я использую set_table_name
, чтобы указать правильное.
class Feature < ActiveRecord::Base
has_many :feature_attributes
end
class FeatureAttribute < ActiveRecord::Base
set_table_name 'feature_attribute'
belongs_to :feature
end
Как только я загружаю функцию, которая, как я знаю, имеет отношение feature_attributes
и назовите feature.feature_attributes
, я получу nil
.На самом деле, даже FeatureAttribute.first
дает мне nil
.Результат FeatureAttribute.any?
возвращает false
.Я обеспокоен тем, что ActiveRecord не читает какие-либо данные из таблицы, потому что нет первичного ключа.Это то, что здесь происходит?
В таблице feature_attribute
есть следующие столбцы.
feature_id
attribute_name
attribute_value
created_date
modified_date
Справка!
Я также отмечу, что запусксгенерированный SQL непосредственно на сервере MySQL фактически возвращает мне нужные мне строки.
SELECT `feature_attribute`.* FROM `feature_attribute` WHERE `feature_attribute`.`feature_id` = 24;
EDIT : Мне очень жаль.В следующий раз я научусь проверять мой database.yml
.Очевидно, я читал из тестовой базы данных, в которой была идентичная таблица функций, но таблица feature_attribute
была совершенно пустой.
Я чувствую себя идиотом.Спасибо за вашу помощь всем;Я голосую за всех вас за ваши проблемы.Мне понравился ответ каждого.(Могу ли я сам проголосовать?))