У меня есть существующая база данных с некоторыми таблицами, использующими имя столбца attribute
. Я просто не могу изменить это имя, так как это будет означать перекомпиляцию всего нашего приложения.
При попытке получить доступ к БД я получаю:
attribute? is defined by ActiveRecord
Сначала я попробовал использовать datamapper, но я не могу с этим справиться, и я обнаруживаю, что исправляю вещи, которые не должны быть повреждены, например, вложенные атрибуты ....
Итак, я вернулся к ar и использую это для решения проблем:
class Radcheck < ActiveRecord::Base
set_table_name 'radcheck'
class << self
def instance_method_already_implemented?(method_name)
return true if method_name == 'attribute?'
return true if method_name == 'attribute_before_type_cast'
return true if method_name == 'attribute='
return true if method_name == 'attribute'
return true if method_name == 'attribute_changed?'
return true if method_name == 'attribute_change'
return true if method_name == 'attribute_will_change!'
return true if method_name == 'attribute_was'
return true if method_name == 'attribute_column'
return true if method_name == 'reset_attribute!'
super
end
end
end
Но это грязно и мешает мне, когда я на самом деле пытаюсь получить доступ к столу ...
Какие у меня есть другие варианты - есть ли хорошие способы обойти этого маленького подонка?