Статьи

Строительные блоки для CMS

Хотя было несколько попыток создания высокоуровневых, подключаемых компонентов в Rails, похоже, ничего не завоевало. Есть движки Rails и несколько полноценных CMS-пакетов , но все же есть тенденция создавать вещи с нуля. Почему это?

Я перечислю несколько низкоуровневых инструментов, которые вы можете интегрировать в любой проект, которые не связываются с внутренними компонентами Rails и которые чрезвычайно просты в настройке и использовании.

  • actions_as_tree или acts_as_nested_set

    Встроенные в Rails, они дадут вам древовидную модель для любых модельных объектов. Посыпать LiveTree для пользовательского интерфейса на основе Javascript.

  • acts_as_versioned

    Храните предыдущие копии страниц, активов или любой опасной модели, которая вам нравится.

  • acts_as_versioned_association

    Опираясь на act_as_versioned, это обеспечивает поддержку версий для ваших ассоциаций, поэтому, если у вас была PageImageAssets

  • Полиморфные ассоциации

    Встроенные в Rails 1.1, полиморфные ассоциации позволяют связывать модель с любым другим типом модели посредством ассоциации полиморфного соединения. Это означает, что вы можете прикрепить комментарий к любому из ваших объектов модели, как в следующем примере:

     
    class Comment < ActiveRecord::Base
      belongs_to :commentable, :polymorphic => true
    end
    

    Добавление поддержки комментариев к модели — это просто вставка однострочной строки has_many

     
    class Post < ActiveRecord::Base
      has_many :comments, :as => :commentable
    end
    
  • acts_as_attachment

    Обеспечивает хранение файлов и загрузок на основе БД, а также поддерживает ImageMagick для автоматического изменения размера изображений. Если это недостаточно гибко, есть плагин ImageMagick для Rails, основанный на манипуляциях с изображениями.

Какие другие строительные блоки вы использовали при добавлении типичных CMS-подобных функций в ваше Rails-приложение?