對抗垃圾信!請您點這裡:

我的E-mail:
我的Skype:My status

2006年8月14日

set_primary_key

在Rails,如果你想要使用自訂的Primary Key Name(主鍵)的話(如果你用Migrate產生,預設就會建立一個叫作id的主鍵)可以使用set_primary_key
set_primary_key好像還要搭配set_table_name使用,不然會出錯!
因為我在作補習班網站的案子時,僅僅加入set_primary_key就出錯,加上set_table_name才正常,因此我想set_primary_key一定要有set_table_name的輔助吧?不過反之我想應該不同!
請在Model裏面編輯
set_table_name “tbl_name”
set_primary_key “pk_name
但是請注意!如果自訂Primary Key的話,在編輯的欄位內請不要讓那個欄位可以編輯!假設我...
set_table_name "people"
set_primary_key "uid"
此時就別讓uid可以編輯,像是出現:
<%= text_field "person", "uid" %>
這樣會產生錯誤!
詳情可以參考:
Agile Web Development with Rails書中第14章第三節的部份,雖然繼續使用uid還是可以的,但是會比較麻煩點!
而該節最後一句話:When you need to set the primary key, use id. At all other times, use the actual column
感謝China on Rails群組中的darren.hoo!
相關討論請看:
Ruby on Rails on Google Groups

2 則留言:

匿名 提到...

我用sql server的Northwind数据库测试过了,只要set_primary_key "CustomerID"(另外如果是sql server的,此处的字段名必须和数据库中的大小写保持一致,否则仍然找不到)就可以,当然,如果你的表名没有使用复数(除非在设置中指明不使用复数),或者你的表名为TB_Customer,而model名为Customer(即没有按着约定来设置表名),这样如不指定表名的话自然对应不上了。

http://hardrock.cnblogs.com

CFC 提到...

原來如此.. 看來我得去檢查過一次:P
謝謝