Я делаю свое первое приложение rails (3).
Ассоциации не имеют смысла. Во-первых, даже направляющие рельсов не
действительно объясните, что они делают, они просто объясняют, как их использовать.
Из того, что я понимаю, ассоциации делают две вещи:
a) Allow ActiveRecord to optimize the structure of the database.
b) Allow ActiveRecord to offer an alternate ruby syntax for
joins and the like (SQL queries). I want this.
Я пытаюсь понять ассоциации и как правильно их использовать. Основан
в приведенном ниже примере кажется, что ассоциации «нарушены» или, по крайней мере,
документация.
Рассмотрим тривиальную версию моего приложения. Учитель, модифицирующий списки слов
для учебы.
Есть 3 соответствующие таблицы для этого обсуждения. Для ясности я просто
включил в таблицу определение инструмента annotate (1) и удалил
ненужные поля / столбцы.
Таблица управления списками слов:
Table name: wordlist_mgmnt_records
id :integer not null, primary key
byline_id :integer(8) not null
Таблица, которая отображает слова в список слов:
Table name: wordlists
wordlist_mgmnt_id :integer not null
word_id :integer not null
На самом деле нам нет дела до самих слов. Но мы заботимся о
последняя таблица, bylines:
Table name: bylines
id :integer(8) not null, primary key
teacher_id :integer not null
comment :text not null
Bylines записывают, кто, какой инструмент использовался, где, когда и т.д. Bylines
в основном используется для устранения неполадок, что случилось, чтобы я мог объяснить пользователям, что
они должны были сделать (и / или исправить свои ошибки).
Учитель может изменять одну или несколько записей управления списком слов одновременно
(он же однопоточный). Иными словами, одно изменение может обновить несколько
списки слов.
Для wordlist_mgmnt_records ассоциации будут:
has_many :bylines # the same byline id can exist
# in many wordlist_mgmnt_records
Но какова соответствующая запись для bylines?
Книга Beginning Rails 3 (Carneiro, et al) гласит:
"Note: For has_one and has_many associations, adding a belongs_to
on the other side of the association is always recommended. The
rule of thumb is that the belongs_to declaration always goes in
the class with the foreign key."
[Да, я также посмотрел онлайн-руководство по рельсам для этого. не имели
Помогите. ]
Что касается таблицы / класса bylines, я действительно хочу сказать?
belongs_to :wordlist_mgmnt_records
Это действительно не имеет смысла. таблица байлингов в основном принадлежит
каждая таблица в базе данных с bylines_id. Так бы я действительно сказал
принадлежит всем им? Разве это не установило бы внешние ключи во всех
другие таблицы? Это, в свою очередь, сделает изменения дороже (слишком много
Циклы процессора) чем я действительно хочу. Некоторые изменения затронули множество таблиц, некоторые
они очень большие. Я ценю скорость при обычном использовании и готов ждать
найти заголовки без внешних ключей при использовании заголовков для очистки / ремонта.
Что дает нам полный круг. Что на самом деле делают ассоциации в рельсах,
и как их разумно использовать?
Просто использование ассоциаций, потому что вы не можете быть правильным
ответьте, но как иначе получить добавленный синтаксис объединения?