В чем разница между t.references
и t.belongs_to
? Почему у нас есть эти два разных слова? Мне кажется, они делают то же самое? Пробовал поискать в Google, но не нашел объяснения.
class CreateFoos < ActiveRecord::Migration
def change
create_table :foos do |t|
t.references :bar
t.belongs_to :baz
# The two above seems to give similar results
t.belongs_to :fooable, :polymorphic => true
# I have not tried polymorphic with t.references
t.timestamps
end
end
end
1
Они работают одинаково - разве это плохо? Ссылки вставляет для вас столбец внешнего ключа. Вместо этого вы можете использовать own_to, чтобы сделать вашу миграцию более читаемой. Подробнее см. Guides.rubyonrails.org/migrations.html .
—
muffinista
Не сказать, что это плохо. Просто запутался, работают ли они одинаково или по-разному, поскольку я не могу найти никакой документации, в которой говорится, что они работают одинаково. http://guides.rubyonrails.org/migrations.html также не совсем ясно по этому поводу.
—
Торнскаден
Скорее всего, это просто для обратной совместимости, и
—
Брикер
references
в будущих версиях rails он будет исключен и удален. Не верьте мне на слово, это просто обоснованное предположение.
«Другой помощник называется ссылками (также доступен как own_to). В своей простейшей форме он просто добавляет некоторую удобочитаемость» - из руководства
—
muffinista
Также вот исходный код - own_to - это прямой псевдоним ссылок github.com/rails/rails/blob/…
—
muffinista