Проблемы с областью действия Rails3 по умолчанию - PullRequest
0 голосов
/ 10 октября 2011

Я пытаюсь загрузить столбец из существующей базы данных, переименовав его, используя область действия моей модели по умолчанию:

def self.default_scope
        Radcheck.find( :all,
       :select => ('attribute as newvalue')
       )
end

Однако, я все еще получаю сообщение об ошибке, определяющее атрибут ....

Хотелось бы переименовать столбец напрямую, но на него уже слишком много ссылок.Есть предложения?

Ответы [ 3 ]

1 голос
/ 10 октября 2011

Да, атрибут является зарезервированным словом. Я знаю, что это не тот ответ, который вы хотите услышать, но вам действительно нужно изменить название этого столбца.

0 голосов
/ 04 июля 2012

Вам нужно заключить столбец в кавычки, так как это зарезервированное слово SQL:

def self.default_scope
        Radcheck.find( :all,
       :select => "#{Radcheck.connection.quote_column_name('attribute')} AS newvalue"
       )
end

Вы можете просто использовать

       :select => '`attribute` AS newvalue' 

, но это зависит от БД - что может или не можетбыть проблемой для вас.

0 голосов
/ 10 октября 2011

Как attribute не допускается. Вы можете рассмотреть возможность использования view для представления столбца с другим именем без влияния на существующую ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...