Jaka jest różnica między t.references
i t.belongs_to
? Dlaczego mamy te dwa różne słowa? Wydaje mi się, że robią to samo? Próbowałem wyszukiwać w Google, ale nie znalazłem wyjaśnienia.
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
źródło
źródło
references
spowodowane tylko wsteczną kompatybilnością i zostanie wycofane i usunięte w przyszłej wersji railsów. Nie wierz mi na słowo, to tylko zgadywanie.Odpowiedzi:
Patrząc na kod źródłowy , robią dokładnie to samo -
belongs_to
jest aliasemreference
:Jest to tylko sposób na uczynienie kodu bardziej czytelnym - miło jest móc
belongs_to
w razie potrzeby umieszczać migracje i trzymać sięreferences
innych rodzajów skojarzeń.źródło
references
to niejednoznaczny wybór terminu. Zmienili nazwębefore_filter
nabefore_action
, co było dobrym posunięciem, ponieważ zmniejszyło niejednoznaczność. Jedną z zaletreferences
jest to, że po prostu różni się od tego, którego używasz w modelu, dzięki czemu jesteś mniej zdezorientowany, jeśli jesteś w modelu lub migracji. Ale każdy inny termin spełnia te kryteria.references
to lepszy termin na poziomie db.