2013-04-08 3 views
0

У меня есть статья модели article.rb (с соответствующими изображениями):Rails architecture, лучше создать новую модель или добавить логическое значение в существующую модель?

attr_accessible: имя,: содержание,: image_ids,: altname1

Теперь я хочу, чтобы создать еще один вид изделий, которые предназначены только для города. Они будут отображаться в совершенно другой части сайта и не связаны со всеми другими статьями. Но модель точно такая же.

Лучше создать новую модель cityarticle.rb или лучше добавить новый булевский столбец (cityarticle with true и false as options) в существующую модель статьи. Я бы тогда добавить новое действие в контроллер:

def cityarticles 
    @cityarticles = Article.where("cityarticle = ?", true) 
end 

Для меня это легче держать только одна модель, но может быть веские причины для новой модели? Как насчет производительности?

+0

, возможно, потребуется дополнительная информация, но на основе того, что вы сказали, сохраните ее как одну модель или расширьте существующую модель статьи, например, «CityArticle timpone

ответ

1

Некоторые вопросы, которые вы задаете себе: каким другим способом будут отличаться эти типы статей? Будет ли у разных людей доступ к созданию/редактированию/удалению? Как создать городскую статью и не позволять ей случайно быть сохранены как негородская статья или наоборот? Использую ли я attr_accessible или strong_parameters, чтобы пользователи не переопределяли тип статьи с переданными параметрами? Будут ли разные типы иметь разные правила валидации (может быть, требуется название города для городских статей)? Насколько тяжело получить только те статьи, которые я хочу? Насколько я могу забыть указать, какие статьи показать и показать их все?

Основываясь на ответах на такие вопросы, вы должны решить, какая структура данных будет работать лучше всего для вас. Если вы используете шаблон RTI Rails, вы можете завершить одну таблицу, но две разные модели, как одно из решений. Производительность, вероятно, не является основным соображением, но если два типа статей никогда не будут запрашиваться вместе, может быть немного лучше с точки зрения производительности разбивать их на отдельные таблицы.

+0

Да, сейчас я поеду на вторую модель. Это более гибко для будущего, и если производительность на самом деле не проблема, это может быть лучшим способом. благодаря – user929062

1

Новая модель представляет собой новую «сущность» в Системе.

Say CityArticles распространяется статья

Это должна быть новая модель для кода ясности и расширяемости для увеличения функциональности над «CityArticles».

Вы можете создать новую таблицу леску или миграции:

рельсы г подмости CityArticles ссылки: статья

Или делает Статья класса polimorfic ассоциации. Прочитано http://teachmetocode.com/articles/ruby-on-rails-what-are-polymorphic-associations/

Смежные вопросы