У меня есть сайт, близкий к завершению строительства. По сути, он состоит из пользователей и фотографий. Тем не менее, фотографии имеют много связей HABTM, большинство из которых представляют собой различные виды тегов, а другие категории, коллекции и т. Д. *
Мой клиент хотел бы иметь условную CMS на основе контента, просматриваемого для различных рекламных целей или еще чего-нибудь. Например, если пользователь просматривает категорию «Лепреконы», он может захотеть показать html-контент о Дне Святого Патрика или о чем-то подобном. Он может даже захотеть легко включить имя пользователя в браузере, если оно доступно. В этом случае было бы неплохо иметь какую-то систему шаблонов. Часть, которая делает это хитрым, состоит в том, что это небольшие блоки HTML для чего-то вроде 300x300 места на боковой панели, и НЕ являются основным контентом.
Я смотрел на нефтеперерабатывающий завод, но это кажется слишком сложным решением. Я также думал о создании с нуля, но я не знаю, с чего начать рассматривать динамически генерируемые страницы (такие как новая категория) как распознаваемый объект в Rails. Я бы хотел, чтобы он был более глобальным, чем ряд отношений HABTM, но, похоже, именно туда я и направляюсь. В идеале он мог бы создать HTML-код и установить флажок «Я хотел бы, чтобы это отображалось на страницах категорий x и y, а также на странице коллекции b и z, а также для тега Foo и для панели тегов, а также на моей домашней странице. «
Есть предложения? Я открыт, чтобы найти драгоценный камень или получить хорошее начало на домашнем пиве.
UPDATE
Я думаю о настройке некоторых моделей, например:
cms_contents
============
id:integer
contents:text
timestamps
cms_associations
================
id:integer
cms_content_id:integer
model_id:integer
record_id:integer #optional
secondary_model_id:integer #optional
secondary_record_id:integer #optional
models
======
id:integer
name:string
Где:
cms_content
будет содержать HTML.
cms_associations
будет моделью ActiveRecord, использующей has_many, :through
models
будет содержать модели, с которыми может быть связан контент CMS
- , если
record_id
не задано, оно ассоциируется с модельным индексом
- если
record_id
задано , это связано с записью предоставленной модели с этим
ID
- если дана вторичная информация, создается комбинация для многих, многих ко многим
отношения
например:
User has_many :photos
Browsing Photos for User(10)
model_id => #User model Id
record_id => 10
secondary_model_id => #Photo model id
Таким образом, вы можете настроить контент для просмотра фотографий для определенных пользователей, таких как популярные пользователи или компании, которые могут платить за рекламу.
Есть мысли об этой структуре?