2013-07-02 3 views
0

У меня есть статья модель со следующими атрибутами: article.rbRails: одна модель для нескольких форм

class Article < ActiveRecord::Base 
    attr_accessible :content, :title, :tag_list, :type_list 
end 

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

Означает ли это, что мне нужно добавить новые атрибуты в статью article.rb или мне нужно добавить несколько моделей для моего контроллера товаров для каждого типа?

+0

Что вы можете точно указать «тип статьи» (можете ли вы привести несколько примеров?) –

+0

Лучше добавить новую таблицу «lookup_article_types», где вы можете установить предопределенные типы статей и использовать lookup_article_type_id вместо type_list из модели Article , –

+0

@MichaelSzyndel: всякий раз, когда я создаю статью, я даю тег для каждой статьи, чтобы иметь возможность фильтровать мои статьи. Например, когда я создаю статью, я хочу добавить теги, такие как учебник, образец и т. Д. Теперь, когда я создаю статью, которая является учебным пособием, я хочу иметь не только идентификатор, заголовок и контент, но также автора и, возможно, другие поля. Нужно ли мне иметь все эти атрибуты в моей модели? или мне нужна другая модель для этого. – lucy

ответ

0

Учитывая приведенные выше замечания, я предлагаю вам перейти на одностраничное наследование. Хороший учебник по STI находится здесь http://juixe.com/techknow/index.php/2006/06/03/rails-single-table-inheritance/

Pro этого решения состоит в том, что вы все равно сможете сделать Post.all. Con является то, что дб таблицы будет иметь много столбцов, не используется для большинства записей (каждая запись будет использовать только тип конкретных значений заполнены)

Если у вас есть какие-либо вопросы, просто спросите, я постараюсь помочь :)

+0

Большое спасибо !!! – lucy

+0

Я попытался выполнить этот урок http://joemcglynn.wordpress.com/2009/12/12/rails-single-table-inheritance-part-2/#comment-35 , но у меня есть проблема в моем создании метод. – lucy

+0

вот исходный код учебника..https: //github.com/canonical/Single-Table-Example . В моем методе создания У меня есть def create @article = Object.const_get (params [: article] [: type]). new (params [: article]) и в моем _form у меня есть <% = f.hidden_field: type%> <% = render: partial => "edit" + f.object.type .downcase,: locals => {: f => f}%> , и я получаю следующую ошибку: undefined method '[] 'для nil: NilClass. Я пытаюсь решить эту проблему, но я не могу. кажется, что он не выдает param [: article] – lucy

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