它看起來像默認:id是整數,我可以把它作爲一個字符串?當我使用Active Record時,可以將ID更改爲字符串嗎?
0
A
回答
3
是的,你可以。
首先運行遷移:
create_table 'table' id: false, force: true do |t|
t.string 'id', null: false
end
指定所述ID的類型string
。
然後在你的模型:
class Table < ActiveRecord::Base
self.primary_key = :id
end
這將基本明確指出該字符串id
是表實例實例的主鍵。
+0
什麼是力量:真正的意思? –
+0
這裏是一個完美的解釋它的文章:) http://stackoverflow.com/questions/18704290/what-does-force-true-mean-in-the-schema-file – Cyzanfar
0
你也應該考慮在Rails中查找大約uuid
的。
儘管它是主要是PostgreSQL
一塊的功能,我們發現它與MYSQL
工作也很好:
你可以將它設置這樣的:
#app/models/post.rb
class Post < ActiveRecord::Base
before_create :set_uuid
private
def set_uuid
self.uuid = loop do
random_token = SecureRandom.hex(5)
break random_token unless self.class.exists? random_token
end
end
end
這可以伴隨 - 如Cyzanfar
所指出 - 通過用uuid
代替id
主鍵。 軌道4自動支持uuid
...
def change
create_column :posts, :uuid, :string
remove_column :posts, :id
rename_column :posts, :uuid, :id
execute "ALTER TABLE table ADD PRIMARY KEY (uuid);"
end
一些參考:
- Rails 4. Migrate table id to UUID
- http://www.lshift.net/blog/2013/09/30/changing-the-primary-key-type-in-ruby-on-rails-models/
-
由於Rails 4蘇開箱即用的uuid
,這應該適合你。
如前所述,我們使用uuid
我們的一些車型(它使我們能夠同時保持獨特記錄保持功能)
相關問題
- 1. 當數據源可以更改時,我可以使用LINQ嗎?
- 2. Python3類 - 您可以將其更改爲字符串嗎?
- 3. 如果我在Rails中使用MongoDB,我可以使用Active Record關聯嗎?
- 4. 我可以使用字符串str =「id」,然後person.str = 1嗎?
- 5. 我可以將對象的變量類型更改爲字符串嗎?
- 6. 使用'includes'可以在Active Record中實現'or'嗎?
- 7. 我可以使用解壓將字符串拆分爲Perl中的字符嗎?
- 8. 我可以更改聊天ID嗎?
- 9. 我可以更改克雷丁字符串的顏色嗎?
- 10. 我可以將字符串標識符作爲函數嗎?
- 11. 我可以將Unicode字符串轉儲爲字節數組嗎?
- 12. 我可以將XText對象更改爲字符引用和實體已解析的字符串嗎?
- 13. 我可以更改我的開放式ID URL更改嗎?
- 14. 使用OnePress時,我可以更改批頭的字體嗎?
- 15. 我可以使用css將字體更改爲圓角字體嗎?
- 16. JPA:我可以使用@Column(precision =)作爲字符串值嗎?
- 17. 我可以使用scanf作爲字符串嗎?
- 18. 我可以使用v字符串作爲IPv4地址嗎?
- 19. 我可以使用字符串作爲QComboBox中的索引嗎?
- 20. 使用Castle Active Record的表前綴使用Castle Active Record
- 21. 我可以爲任意模型方法設置Active Record回調嗎?
- 22. 我可以使用Javascript更改HTML元素的ID嗎?
- 23. 我可以更改iframe src而不使用js或ID嗎?
- 24. 我可以將列表更改爲字符串,修改它,並將其更改爲列表?
- 25. 將大寫更改爲小寫可以縮短字符串的長度嗎?
- 26. 我們可以將字符串保存爲OpenTSDB中的值嗎?
- 27. 使用Active Record進行更新
- 28. 更新使用Active Record的CI中
- 29. 我可以更改循環中使用的ID嗎?需要在6次迭代中更改1個字符
- 30. Yii-Active Record將特定列的平均結果作爲字符串返回
你對一個特定的原因是什麼? –
選中此項。 http://stackoverflow.com/questions/1200568/using-rails-how-can-i-set-my-primary-key-to-not-be-an-integer-typed-column –