Хотя было несколько попыток создания высокоуровневых, подключаемых компонентов в Rails, похоже, ничего не завоевало. Есть движки Rails и несколько полноценных CMS-пакетов , но все же есть тенденция создавать вещи с нуля. Почему это?
Я перечислю несколько низкоуровневых инструментов, которые вы можете интегрировать в любой проект, которые не связываются с внутренними компонентами Rails и которые чрезвычайно просты в настройке и использовании.
- actions_as_tree или acts_as_nested_set
Встроенные в Rails, они дадут вам древовидную модель для любых модельных объектов. Посыпать LiveTree для пользовательского интерфейса на основе Javascript.
- acts_as_versioned
Храните предыдущие копии страниц, активов или любой опасной модели, которая вам нравится.
- acts_as_versioned_association
Опираясь на act_as_versioned, это обеспечивает поддержку версий для ваших ассоциаций, поэтому, если у вас была
Page
ImageAssets
- Полиморфные ассоциации
Встроенные в 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-приложение?