我有一個表的某些列,現在我需要修改一列,使其獨特(沒有重複的值),我該怎麼辦,在Ruby on Rails的?如何添加獨特的表列在Ruby on Rails的
8
A
回答
7
您可以驗證添加到您的模型,以禁止重複值
class MyModel < ActiveRecord::Base
validates_uniqueness_of :my_column_name
end
-4
counter = 0
Model.all.each {|m| m.some_value = counter; m.save; counter += 1;}
:)
,然後添加驗證爲@j。回答
-1
有人糾正我,如果我錯了,因爲我還沒有親自用過,但我相信你可以使用遷移設置唯一在數據庫級別上。
def self.up
change_column :<table name>, :<attribute name>, :<data type>, :unique => true
end
3
這是代碼直接從我的工作項目:
add_index(:tickets, [:to_email, :body_hash, :from_email] , :unique => true, :limit => 255)
注意,如果您使用的文本字段唯一的(而不是字符串),雖然它不是」的限制功能時,才需要在軌道上實現(尚未達到3.0我相信)。您可以通過使用插件mysql_index_length http://github.com/eparreno/mysql_index_length/
add_index(:table_name, [:column_name, :second_column_name, :third_column_name] , :unique => true, :limit => 255)
這個例子是三列創建唯一索引,但如果你希望你可以使用它的一列繞開這一限制。
鏈接到該項目在GitHub上:http://github.com/thinkbohemian/WhySpam/blob/master/db/migrate/20091223193335_add_unique_index.rb
4
class MyModel < ActiveRecord::Base
validates_uniqueness_of :my_column_name
end
上述建議可能會斷裂,如果你正在運行獨角獸多的Heroku DYNOS,各有多個web程序等
因此更好的辦法這樣做將是
class AddEmailIndexToUser
def change
# If you already have non-unique index on email, you will need
# to remove it before you're able to add the unique index.
add_index :users, :email, unique: true
end
end
https://robots.thoughtbot.com/the-perils-of-uniqueness-validations
,或者您可以使用原始SQL遷移做到這一點。
execute <<-SQL
ALTER TABLE Persons
ADD UNIQUE (P_Id)
SQL
相關問題
- 1. Ruby on Rails的獨特有序查詢
- 2. ruby on rails在特定列名之後添加一列
- 3. 將獨立的Ruby文件添加到Ruby on Rails項目
- 4. 表加入Ruby on Rails的
- 5. ruby on rails has_one協會與獨特
- 6. Ruby on Rails - 添加評論
- 7. 如何在Ruby on Rails的
- 8. 如何在Ruby on Rails的
- 9. Ruby on Rails的:在表
- 10. Ruby on Rails排序列表
- 11. 添加標題爲IMAGE_TAG Ruby on Rails的
- 12. Ruby on Rails:何時添加新資源
- 13. 添加如果Ruby on Rails中brakets
- 14. Ruby on Rails,設計:我如何將用戶表的id添加到posts.user_id列?
- 15. 如何在Ruby on Rails的URL中添加參數?
- 16. 如何添加一個類在Ruby中select_tag on Rails的
- 17. 在Ruby on Rails中添加數組
- 18. 在Ruby on Rails中添加ID或類?
- 19. Ruby on Rails在link_to中添加路徑?
- 20. 將表列添加到group by子句 - Ruby on Rails - Postgresql
- 21. Ruby on Rails的得到查詢獨特的國家造成
- 22. Ruby on Rails的 - 與陣列
- 23. Ruby on Rails的:從陣列
- 24. 在Ruby on Rails的
- 25. 在Ruby on Rails的
- 26. 在Ruby on Rails的
- 27. 如何在Ruby on Rails中添加表單元素的onchange監聽器?
- 28. 如何添加對用戶Ruby on Rails的類和排序呢?
- 29. 如何添加iframe到ruby on rails 4.2.6中的sanitized標籤?
- 30. Python列表理解:在列表中添加獨特的元素?
這不會在mysql表級別工作... – ohana 2010-05-13 20:52:53
這個工作對我來說與MySQL版本14.14 DISTRIB 31年5月5日,爲Debian的Linux-GNU(x86_64的)。我喜歡這個解決方案。 – Askar 2013-06-19 07:03:45
對於交通繁忙多個進程,這可能會斷裂。 – lulalala 2013-07-04 07:21:08