Организация классов и объектов в Ruby?

#ruby-on-rails #ruby #class #object #organization

#ruby-на-рельсах #рубиновый #класс #объект #организация

Вопрос:

Я новичок в Ruby on Rails. У меня есть вопрос относительно организации объектов и классов.

У меня есть класс Article, в котором есть несколько полей, таких как автор, ключевые слова, дата и т.д.

Проблема в том, что я хочу упорядочить эти объекты статей, чтобы иметь возможность анализировать их коллективно. Статьи взяты из разных источников, и я хочу иметь доступ к ним на основе источника.

Я предполагаю, что у меня может быть новый класс для ArticleSource и связать его с классом Article через такие отношения, как has_one или embeds_one. Правильно ли я это делаю, или есть лучший способ?

Заранее спасибо!

Комментарии:

1. Каково ваше определение термина «источник»? Будет ли «Нью-Йорк таймс» примером источника статьи?

Ответ №1:

Я думаю has_many и belongs_to сделаю то, что вы хотите.

После добавления article_source_id столбца в таблицу Article ваши классы будут выглядеть примерно так:

 class ArticleSource
  has_many :articles
end

class Article
  belongs_to :article_source
end
 

Затем вы можете анализировать статьи коллективно, используя такой код:

 source = ArticleSource.find_by_name("New York Times");
articles = source.articles
 

Комментарии:

1. Последующий вопрос: как мне создать исходные тексты? Нужно ли мне устанавливать поле в контроллере? нравится article.article_source.create()?

2. Нет, это выдало бы ошибку, потому что article_source будет равен нулю. Вы можете сделать это: source = ArticleSource.create! :name => "New York Times"; article.article_source = source или article.article_source_id = source.id .

3. Извините, я новичок, но у вас есть пример кода этого? или не могли бы вы указать мне на учебник? Спасибо.

4. Я только что дал вам пример кода для всего, кроме миграции. Что еще вам нужно?

Ответ №2:

Я думаю, вам следует изучить здесь наследование одной таблицы.

Сохраняйте Article как суперкласс и наследуйте его на подклассы, такие как ExtertArticle (источник экспертный) и StudentArticle и т. Д…

Ссылка: http://api.rubyonrails.org/classes/ActiveRecord/Base.html

Комментарии:

1. Я думаю, что это сложнее, чем необходимо. Как вы думаете, почему «источник» должен быть таким особым атрибутом статьи, что он заслуживает такого обращения? Что, если у разработчика есть другой атрибут, такой как «формат» (например, веб, журнал, сообщение в блоге); что делает «источник» более важным, чем «формат»?