Я перемещаю устаревшее приложение из MS-SQL в Postgres, которое использует Rails для доступа к данным.ActiveRecord/ActiveModel Attribute Case-Sensitivity
столбцов в MS-SQL, капитализируются, и при использовании ActiveRecord-SQL-Server-адаптера, они читаются так:
var something = my_model.SomeAttribute
Даже если она постоянна, она не появляется так как приложение только считывает данные из базы данных MSSQL.
Проблема, с которой я столкнулся сейчас, - это переместить в postgres, она преобразует все имена столбцов и т. Д. В нижний регистр (поскольку SQL не предназначен для учета регистра). Теперь, когда я пытаюсь получить доступ к SomeAttribute
на моей модели, он вызывает ActiveModel::MissingAttributeError
, так как теперь он является строчным.
Некоторые примеры симптома:
p.SomeAttribute
=> ActiveModel::MissingAttributeError: missing attribute: SomeAttribute
p.read_attribute(:SomeAttribute)
=> nil
p.has_attribute?(:SomeAttribute)
=> false
p.read_attribute(:someattribute)
=> 'expected value'
Есть ли какой-то способ, которым я могу получить ActiveRecord/ActiveModel для преобразования имен атрибутов в нижний регистр, прежде чем пытаться получить их?
Вы когда-нибудь это выясняли? – Altonymous