В чем разница между 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
ruby-on-rails
rails-migrations
Tornskaden
источник
источник
references
в будущих версиях rails он будет исключен и удален. Не верьте мне на слово, это просто обоснованное предположение.Ответы:
Глядя на исходный код , они делают то же самое -
belongs_to
псевдонимreference
:Это просто способ сделать ваш код более читабельным - приятно иметь возможность вставлять
belongs_to
свои миграции, когда это необходимо, и придерживатьсяreferences
других видов ассоциаций.источник
references
это неоднозначный выбор термина. Они переименовалиbefore_filter
вbefore_action
, что было хорошим ходом, поскольку уменьшило двусмысленность. Одним из преимуществreferences
является то, что он просто отличается от того, что вы используете в модели, поэтому вы меньше запутаетесь, если вы используете модель или миграцию. Но любой другой термин удовлетворяет этим критериям.references
лучше термин на уровне базы данных.