Bir alan için kullanılabilir değerleri kısıtlamak istiyorum. Bu nedenle, sütunun değeri belirtilen değerler kümesinden olmalıdır. Göç/model kullanarak mümkün mü? Yoksa DB'mde el ile mi yapmalıyım?Sütun için değerler nasıl kısıtlanır
cevap
Bunun için doğrulamaları kullanacağız var özgül 2015
class Person < ActiveRecord::Base
validates :relationship_status,
:inclusion => { :in => [ 'Single', 'Married', 'Divorced', 'Other' ],
:message => "%{value} is not a valid relationship status" }
end
Düzenleme Ağustos: Raylar 4.1 itibariyle, bunun için enum
sınıf yöntemi kullanabilirsiniz Bu sizin sütunu bir olmasını gerektirir Bu durumda aradığınız yardımcı örneğin :inclusion
olduğunu. tamsayı türü:
class Person < ActiveRecord::Base
enum relationship_status: [ :single, :married, :divorced, :other ]
end
otomatik de sana bazı kullanışlı yöntem tanımlar: http://api.rubyonrails.org/v4.1.0/classes/ActiveRecord/Enum.html
İhtiyacınız olan güven miktarına bağlıdır. Bu değerlerle kısıtlamak için modelinize bir geçerlilik kazandırıcı ekleyebilir, ancak mevcut verilerin eşleşeceğinden emin olmazsınız (ve daha sonraki kayıtların doğrulama nedeniyle başarısız olmasına neden olur) ve diğer değişiklikler diğer uygulamalar tarafından da yapılabilir. çevreleyen ham sql.
Mutlak bir güven istiyorsanız, veritabanını kullanın. . Burada
size raylar doğrulayıcı neler yapabileceğini kıyasla sınırlı oldukça edildiği (veritabanında yaparsanız kullanmak isteyebilirsiniz ne:. a whole Rails guide on the topic http://www.w3schools.com/sql/sql_check.aspsayesinde, evet, doğrulama hakkında bilmek:
p = Person.new(relationship_status: :married) p.married? # => true p.single? # => false p.single! p.single? # => true
Burada enum
belgelerine okuyabilir. Ve kısıtlamalarımı geçiş dosyasında belirtebilir miyim? –
damluar
Eşleşmeyen, bunları güncelleyen/silenler olan bir geçiş oluşturabilirsiniz. Yine de uyarılırsınız - modellerinizi geçişinizde kullanırsanız, modellerin geçişin bekleyişiyle senkronize olmadığında kullanıcıları yönlendirebilirsiniz. – Ponny
Yardım için teşekkürler! – damluar
- 1. Android'de edittext için giriş süresi nasıl kısıtlanır
- 2. Sanal Hesaplanmış sütunlar nasıl kısıtlanır?
- 3. T: SQL: sütun olarak satırları seçin değerler
- 4. Boş değerler için varsayılan değerler
- 5. Ravendb'de yönetici paneline erişim nasıl kısıtlanır?
- 6. WCF hizmetlerini tüketen kullanıcılar nasıl kısıtlanır
- 7. Tip özniteliğinde NDepend yöntemleri sorgusu nasıl kısıtlanır
- 8. Phoenix'te belirli rotalara erişim nasıl kısıtlanır?
- 9. Protokol yalnızca türlere göre nasıl kısıtlanır?
- 10. Başka bir sütun NaN ise sütundaki değerler nasıl değiştirilir?
- 11. Matris için sütun nasıl?
- 12. Python Pandalar - Sütun dizini için sütun Sütun
- 13. Sıfır olmayan değerler ile sütun tarafından ilk olarak sql
- 14. Statik değerler sütunu nasıl seçilir?
- 15. SQL'de INSERT için yinelenen değerler nasıl önlenir?
- 16. Mongoose'daki farklı değerler için nasıl sorgu yaparım?
- 17. Sütun ve değerler farklı türden ise bir veri çerçevesi sorgulama
- 18. Benzersiz değerler, böyle virgülle ayrılmış değerler bir sütun dolu görünen bir tabaka Verilen Excel
- 19. WPF AutoCompleteBox - Yalnızca öneri listesinden seçim yapmak nasıl kısıtlanır?
- 20. DataTable DataRow Data sütun Sütunlar için sütun
- 21. CreateParams.Style için olası değerler nelerdir?
- 22. Değerler
- 23. Aktif nesneler için döndürülen değerler
- 24. nasıl listeden değerler
- 25. Değerler Dosyadan Nasıl Ayrılır
- 26. Değerler appsetting.json'a nasıl güncellenir?
- 27. değerler seçin
- 28. xml'de nasıl değerler toplanır?
- 29. Karma değerler nasıl değiştirilir?
- 30. Oracle veritabanı sütunundaki belirli değerler nasıl değiştirilir?
Taşıma düzeyine ayarlamak mümkün mü? – damluar
Veritabanı düzeyinde kısıtlamalar oluşturabilirsiniz - MySQL ve PostgreSQL örneğin bir sütun türüne sahiptir, örneğin SQLite ve Oracle bunu yapmaz - ancak Raylar bunları doğrudan desteklemez. Desteklenmeyen sütun türlerini kullanabilirsiniz. t.column: col_name, 'CUSTOM SQL TYPE', ancak bu değerlerin birçoğunu ele alırsınız ve bu geçişleri farklı bir RDBMS'de çalıştıramazsınız. diğerleri) belgelere özellikle karşı uyarır. –
Teşekkürler, dostum. Çok yardımcı oldun! – damluar