Numaraları raylar: Dize veya Tamsayı sütun?

Şu anda numaralandırmalar için uygun bir Rails gem arıyorum.

Çoktan denedim

  • enum_simulator
  • has_enum

    1. Both use a string column in the database to store the enum data. Wouldn't an integer column have a better performance or less storage consumption (using MySQL)?
    2. Is there a gem out there that can already do this?

Çok teşekkürler!

Update: I found the simple_enum gem which uses integer values to represent the enum within the database. It supports rails 3.1 and is well maintained.

4

2 cevap

Ruby Toolbox is your friend. https://www.ruby-toolbox.com/categories/Active_Record_Enumerations

Her iki Rails 2.3 ve Rails 3 ile iyi sonuçlar veren enumerated_attribute kullanıyorum. Evet, bir dize sütunu kullanır.

IMO dize sütunları, tamsayı sütunlarından daha iyidir, çünkü herhangi bir değer sırasını ima etmezler ve kaynak koduna bakmadan özniteliğin anlaşılmasını kolaylaştırırlar (tersine mühendis). Ve genellikle performans farkı ihmal edilebilir, özellikle de sahada bir indeks varsa - ve yapmalısınız.

MySQL enum alanını kullanmak Rails 2.3'te karmaşıktır, Rails 3'te devam edip etmediğinden emin değil, şemalarla ilgili sorun.

4
katma
@alex, sanmıyorum, çünkü enum bunun içindir. Bu arada, kışkırtmayı unutma.
katma yazar Leonid Shevtsov, kaynak
Çok teşekkürler! ona bir göz atacağım. Eğer sayımdan fazla miktarda değer varsa, MYSQL bir dize sütununun verilerini sıkıştırır mı?
katma yazar alex, kaynak
tamam teşekkürler ... biraz daha araştırma yapacağım. Özür dilerim ama şu anda en fazla oyu alabilmek için yeterli bir itibarım yok ama kesinlikle en kısa zamanda yapacağım.
katma yazar alex, kaynak
MySQL enum 'un Rails 3'te hala desteklenmediğini onaylayabilirim
katma yazar Paweł Obrok, kaynak

Bu gem için bakın: enumerate_it . Bence senin problemini çözüyor!

0
katma