атрибут языка в модели Rails ActiveRecord - PullRequest
1 голос
/ 06 сентября 2011

Я попытаюсь выяснить какое-то странное поведение из модели ActiveRecord.Модель имеет поле language, заполненное идентификатором языка ("de", "en")

Если я хочу получить доступ к атрибуту языка из объекта модели, я получуnil.

 $> foo = Product.first
 => #<Product id: 1049488, ... , language: "en", ...>

 $> foo.id
 => 1049488

 $> foo.language
 => nil

 $> foo.send("language")
 => nil

 $> foo.to_yaml
 => "--- !ruby/object:Product \nattributes: \n  ... language: en\n ..."

 $> foo.language
 => "en"

Это похоже на скрытую "функцию" отложенной загрузки или что-то еще пытается вмешаться здесь.Это имя поля "language" вызывает такое поведение или есть какой-то другой механизм, который я не понимаю?

Я использую следующие Gems внутри моего проекта Rails:

  • rails 3.0.0
  • jquery-rails
  • sqlite3-ruby
  • mysql
  • rmagick
  • act_as_tree
  • dbi
  • dbd-odbc
  • solr-ruby
  • progressbar

Я также проверил различные списки " зарезервированных слов " дляколлизии, но ни в одном списке нет language.Когда имя столбца будет изменено на lang, все работает нормально.Итак, - это проблема с именами, но я не могу отследить ее.Существуют ли какие-либо инструменты для получения стека вызовов или чего-то еще из данного метода в Ruby для определения проблемы?

1 Ответ

0 голосов
/ 06 сентября 2011

Ruby-приложение часто начинает вести себя странно или странно, если у вас конфликт имен . Может быть, это какое-то зарезервированное слово или конфликт между столбцом и именем метода. У вас есть что-нибудь еще с именем language в вашей модели или в ваших плагинах?

...