Rails numaralandırmaları: satr yoki tamsayı ustuni?

Hozirda raqamlar uchun tegishli Rails gemini izlayapman.

Men allaqachon sinab ko'rdim

  • 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?

Katta rahmat!

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 javoblar

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

Yaxshi natijalar bilan Rails 2.3 va Rails 3 bilan enumerated_attribute dan foydalanayapman. Ha, u mag'lubiyat ustunidan foydalanadi.

IMO mag'lubiyat ustunlari tamsayı ustunlaridan yaxshiroqdir, chunki ular hech qanday qadr-qiymatlarni bildirmaydi va manba kodiga qaramasdan xususiyatni tushunishni osonlashtiradi (agar kerak bo'lsa muhandislik). Odatda ishlash farqlari beparvo bo'ladi, ayniqsa, agar sizda indeks mavjud bo'lsa - kerak.

MySQL enum maydonidan foydalanib, Rails 2.3 da murakkab, sxemalar bilan bog'liq muammolar, Rails 3 da saqlanmaganiga ishonch hosil qilmadi.

4
qo'shib qo'ydi
@alex, shuni o'ylayman, chunki bu enum uchun. Shunga qaramay, yuqoriga ko'tarishni unutmang.
qo'shib qo'ydi muallif Leonid Shevtsov, manba
Katta rahmat! Men unga qarayman. MYSQL raqamlash tizimidan keraksiz qiymatlar mavjud bo'lganda, mag'lubiyat ustunidan ma'lumotlarni siqib chiqaradimi?
qo'shib qo'ydi muallif alex, manba
OK, rahmat ... men keyingi tadqiqotlar qilaman. Men uzr so'rayman, lekin hozirda ovoz berish uchun etarlicha e'tiborga ega emasman, lekin, albatta, imkon qadar qisqa vaqt ichida buni amalga oshiraman.
qo'shib qo'ydi muallif alex, manba
MySQL enum kodini hali Rails 3 da qo'llab-quvvatlamaydi
qo'shib qo'ydi muallif Paweł Obrok, manba

Ushbu marvaridni izlang: enumerate_it . Men sizning muammoingizni echadi deb o'ylayman!

0
qo'shib qo'ydi