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