2016-09-22 51 views
1

我正在用Ruby on Rails構建一個應用程序來測試人口統計變量。現在,我對如何從屬於用戶模型的模型(屬性)的兩個屬性聲明數據類型有疑問。這些屬性是「一般」和「公民身份」。我知道元素可以是字符串數據,但如果我假裝使用此信息進行一些統計,會更方便地聲明此數據,如整數?,也就是說,這是統計中的主格數據,所以一個數字足以代表一個狀態或一個基因,即。 1→femenin/2→masculin。我應該用整數還是字符串來聲明這個屬性?

我會很感激你的建議。謝謝你的時間。

+0

即使它是'M'/'F'這樣簡單的東西,我總是會用一個描述性的值,但這取決於你。考慮清晰度和可維護性。充滿數字值的數據庫可能很難在支持環境中閱讀。 – Mick

+0

我認爲最好在你的數據庫上使用字符串,在你的應用上使用'to_sym' – sa77

回答

2

Enums哪些是整數位掩碼通常是一種很好的方式,對於存在一定選擇的屬性以及添加/刪除選項是開發人員級別關注的情況。

class Person < ApplicationRecord 
    enum gender: [:undisclosed, :male, :female, :other] 
end 

這會將性別存儲在整數列中,值爲0-3。掃描和索引的列比字符串列要快得多。

它還爲您節省了將可接受的字符串值列入白名單並根據該值編寫作用域的麻煩。

你可以做Person.female來獲得一個範圍。

+0

請注意,性別和公民身份都是政治熱土豆,你應該知道任何法律問題/要求,比如提供'other'選項。 – max

+0

謝謝麥克斯,我有這樣的想法,並提供'other'選項是一個好主意。 – Inius

+0

還有一件事,當我生成模型時,如何在終端中聲明'enum'? 'rails生成模型stat genere:enum civil_status:enum'是嗎? – Inius

相關問題