อะไรคือความแตกต่างระหว่าง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
พวกเขาทำงานเหมือนกันนั่นเป็นสิ่งที่เลวร้ายหรือไม่? การอ้างอิงจะแทรกคอลัมน์คีย์นอกสำหรับคุณ คุณสามารถใช้ belong_to แทนเพื่อให้การย้ายข้อมูลของคุณอ่านง่ายขึ้น ดูรายละเอียดบางอย่างในguide.rubyonrails.org/migrations.html
—
muffinista
ไม่ได้บอกว่าเป็นสิ่งที่ไม่ดี เพิ่งสับสนว่าพวกเขาทำงานเหมือนกันหรือคนละแบบกันเพราะฉันไม่พบเอกสารที่ระบุว่าทำงานเหมือนกัน http://guides.rubyonrails.org/migrations.htmlยังไม่ชัดเจนในเรื่องนั้น
—
Tornskaden
สิ่งนี้มีแนวโน้มที่จะใช้เพื่อความเข้ากันได้แบบย้อนหลังเท่านั้นและ
—
ช่างก่ออิฐ
references
จะเลิกใช้งานและนำออกในอนาคตของราง อย่าใช้คำของฉันเกี่ยวกับเรื่องนี้มันเป็นเพียงการคาดเดาที่มีการศึกษา
"ตัวช่วยอื่น ๆ เรียกว่าการอ้างอิง (มีให้ใช้ในชื่อ belong_to) ในรูปแบบที่ง่ายที่สุดก็แค่เพิ่มความสามารถในการอ่าน" - จากคำแนะนำ
—
muffinista
นี่คือซอร์สโค้ด - เป็นของ _to เป็นนามแฝงที่ตรงของการอ้างอิงgithub.com/rails/rails/blob/…
—
muffinista