act_as_tree и rails 3.2.3 несовместимы?

Я использую Rails 3.2.3 и act_as_tree 1.1.0. Я использовал act_as_tree для нескольких различных проектов с более ранними версиями Rails 3 (например, 3.1.1.) без проблем, но для этой версии он вообще не будет работать. Если это из-за 3.2.3 или чего-то еще, что я использую, я не смог подтвердить.

Это то, что я пробовал, но безрезультатно: - Использование act_as_tree на нескольких разных контроллерах - Только использование act_as_tree (без оператора заказа) - Запустить установку пакета и обновление пакета - Дважды проверьте, что parent_id существует и является целым числом

Во-первых, когда я попробовал это, я получил первую попытку:

undefined method `acts_as_tree'

перезагрузка страницы (и ничего не делать) вызвала:

undefined method `key?' for nil:NilClass

затем перезапуск сервера привел к сбою запуска (приложение вылетало и не запускалось) со следующей ошибкой:

/Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler/runtime.rb:68:in `require': /Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:78: odd number list for Hash (SyntaxError)
        foreign_key:   "parent_id",
                    ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:78: syntax error, unexpected ':', expecting '}'
        foreign_key:   "parent_id",
                    ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:78: syntax error, unexpected ',', expecting kEND
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:79: Can't assign to nil
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:80: syntax error, unexpected ':', expecting '='
        counter_cache: nil,
                      ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:80: Can't assign to nil
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:81: syntax error, unexpected ':', expecting '='
        dependent:     :destroy
                  ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:82: syntax error, unexpected '}', expecting kEND
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:86: syntax error, unexpected ':', expecting kEND
      belongs_to :parent, class_name:    name,
                                     ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:87: syntax error, unexpected ':', expecting '='
        foreign_key:   configuration[:foreign_key],
                    ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:88: syntax error, unexpected ':', expecting '='
        counter_cache: configuration[:counter_cache],
                      ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:89: syntax error, unexpected ':', expecting '='
        inverse_of:    :children
                   ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:91: syntax error, unexpected ':', expecting kEND
      has_many :children, class_name:  name,
                                     ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:92: syntax error, unexpected ':', expecting '='
        foreign_key: configuration[:foreign_key],
                    ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:93: syntax error, unexpected ':', expecting '='
        order:       configuration[:order],
              ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:94: syntax error, unexpected ':', expecting '='
        dependent:   configuration[:dependent],
                  ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:95: syntax error, unexpected ':', expecting '='
        inverse_of:  :parent
                   ^
    from /Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler/runtime.rb:68:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler/runtime.rb:66:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler/runtime.rb:66:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler/runtime.rb:55:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler/runtime.rb:55:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler.rb:119:in `require'
    from /Users/Christoffer/Documents/Webbprojekt/rails/Presenttips/config/application.rb:7
    from /Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/commands.rb:53:in `require'
    from /Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/commands.rb:53
    from /Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/commands.rb:50:in `tap'
    from /Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/commands.rb:50
    from script/rails:6:in `require'
    from script/rails:6

что заставляет меня предположить, что существует проблема совместимости между Rails 3.2.3 и act_as_tree. Хотя я не знаю, как это проверить.

Какие варианты у меня есть? Мне не обязательно использовать Rails 3.2.3, но если я перейду на 3.1.1. (что я пробовал) Я сталкиваюсь с другими проблемами, которые кажутся хуже («настройка файла», похоже, не такая).

Итак, каковы мои варианты? Вы тоже испытали это? Что-то не так с act_as_tree, верно?


person Christoffer    schedule 30.05.2012    source источник


Ответы (1)


Похоже, есть открытая 2-летней давности

открыл эту проблему 2 года назад Не работает с Rails 2.3.8 https://github.com/rails/acts_as_tree/issues/1

Опции

act_as_tree_rails3 gem install acts_as_tree_rails3

or

nested_set https://github.com/skyeagle/nested_set

Изменить:

Вы правы, новое местоположение — https://github.com/amerine/acts_as_tree того же автора.

с комментарием

Мы больше не поддерживаем Ruby 1.8 или версии, если Rails/ActiveRecord старше 3.0. Если вы используете версию ActiveRecord старше 3.0, используйте версию 0.1.1.

В будущем мы сделаем все возможное, чтобы поддерживать последние версии ActiveRecord и Ruby.

Вот поэтому и не заморачивались с теми открытыми вопросами

person Hitham S. AlQadheeb    schedule 30.05.2012
comment
использование act_as_tree_rails3 помогло. Я не вижу, как связана проблема, на которую вы ссылаетесь. Никогда раньше не слышал об act_as_tree_rails3 и не использовал его для 3.1.1. но я рад, что это сработало. Спасибо! - person Christoffer; 30.05.2012