Rails列挙型:文字列または整数列?

私は現在、列挙のための適切なRailsの宝石を探しています。

私はすでに試した

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

どうもありがとう!

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 答え

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

私は、Rails 2.3とRails 3の両方で enumerated_attribute を使って、良い結果を出してきました。はい、文字列を使用します。

IMO文字列は、整数の列よりも優れています。これは、値の順序を意味するものではなく、ソースコードを見ずに属性を理解しやすい(リバースエンジニアリングする)ためです。そして、通常、パフォーマンスの差は無視できます。特にフィールドにインデックスがある場合は、そうしなければなりません。

MySQLの enum フィールドを使用することは、Rails 2.3では複雑であることが証明されています。

4
追加された
@alex、私はそうは思わない#これは enum のためです。ところで、upvoteを忘れないでください。
追加された 著者 Leonid Shevtsov,
どうもありがとう!私はそれを調べます。列挙の冗長な値が多い場合、MYSQLが文字列のデータを圧縮するかどうか知っていますか?
追加された 著者 alex,
大丈夫です...私はさらなる研究をします。申し訳ありませんが、私は現在、アップ・ボートを行うのに十分な評判を持っていませんが、私はできるだけ早くそれを間違いなく実行します。
追加された 著者 alex,
MySQLの enum がまだRails 3ではサポートされていないことを確認できます
追加された 著者 Paweł Obrok,

この宝石を探してください: enumerate_it 私はそれがあなたの問題を解決すると思います!

0
追加された