看板 Ruby 關於我們 聯絡資訊
※ 引述《tonytonyjan (南洋大兜蟲)》之銘言: : 環境: : Rails ~> 3.0.0 : 狀況: : 在閱讀文章、書籍的時候,看到每個人都說 : has_one, belongs_to後面要放單數的association_id : has_many, has_and_belongs_to_many及:through後面要放複數 : 但是皆知其然不知其所以然 : 那些association_id的域名來自哪裡? : 是DB中已存在的table name嗎?還是已存在的model name呢? 這幾個association方法都有參數是 :foreign_key 和 :class_name 這兩個值通常不需要設定, 因為rails會依照慣例幫你設定 belongs_to :user 等同於 belongs_to :user, :foreign_key => :user_id, :class_name => "User" 至於DB的table叫啥,依照慣例則是Model名字的複數: class UserJob < ActiveRecord::Base end 等同於 class UserJob < ActiveRecord::Base set_table_name :user_jobs set_primary_key :id end 因此, 如果你通通依照rails慣例, 你就不需要寫 set_table_name, set_primary_key, :foreign_key, :class_name....這些參數了, 這就叫 慣例勝於設定(Convention Over Configuration)原則 : 我如果故意單數寫複數,複數寫單數,仍可以運作嗎? no, 除非你手動指定 :foreign_key 和 :class_name 等 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.174.138 ※ 編輯: ihower 來自: 111.240.174.138 (08/01 03:44)
markmcm:推詳細~ 08/01 08:19
tonytonyjan:感謝指點!真的非常的詳細!m(_ _)m 08/02 12:24