1

我想要做的事:如何在Ruby中存儲的國家爲整數的數據庫上軌

我試圖找出是否有一個快速的方式來獲得country_select存儲代表整數而不是自己儲存國名/字符串。我正在使用country select gem

可能的解決辦法:我想這是可以做到

的一種方法是,如果我安裝創業板作爲一個插件和編輯國家陣列,與整數主陣列和一個字符串例如內的數組COUNTRIES = [[「United Kingdom」,1],[「United States」,2]]

這樣在我的表單中將會有表示字符串的值。然後我可以在我的個人資料表中有一個country_id列,其中用戶選擇的國家ID將被存儲。我將有一個單獨的表格「國家」,這些國家將存儲國家,我將使用profiles表格的country_id來引用國家/地區表格中的正確國家/地區。

這樣做會意味着我仍然可以獲得gem/plugin的良好功能,例如在選擇列表頂部有優先國家/地區。我不知道該怎麼做我自己的東西。

這將需要很長時間,但它可以工作。如果我選擇這個解決方案,我會把插件放在哪裏?供應商文件夾在我的apps目錄中?

但是,如果有更快的方法來做到這一點,我想這樣做。

一個更大的圖片:

好吧,我有一個搜索表單,用戶可以在瀏覽網站的用戶通過過濾出的結果:

文本輸入位置 性別 性慾 婚姻狀況 國家

我使用思維獅身人面像和過濾屬性時,似乎屬性需要表示整數,因爲一切正常,但國家年。

我使用的是country select gem,它似乎只存儲字符串,而不是表示字符串的整數。

我想將它存儲爲整數。

這裏有一些contants我用我的搜索形式:

module ApplicationHelper 

    GENDER   = [["Select", nil],["Male", 1],["Female", 2]] 

    ETHNICITY   = [["Select", nil],['Black', 1 ],['White/Caucasian', 2 ],['European', 3 ],['Asian', 4 ], 
         ['Indian', 5 ],['Middle Eastern', 6 ],['Native American', 7 ],['Hispanic', 8 ], 
         ['Mixed Race', 9 ],['Other Ethnicity', 10 ]] 

    MARITAL_STATUS = [[' Select', nil],['Single', 1 ],['Dating', 2 ],['In relationship', 3 ],['Married', 4 ], 
         ['Living Together', 5 ],['Divorced', 6 ],['Separated', 7 ],['Widowed', 8 ]] 

    SEXUAL_PREFERENCE = [[' Select', nil],['Straight', 1 ],['Gay', 2 ],['Bi-sexual', 3 ]] 

end 

搜索/瀏覽形式:

<%= form_tag browsers_path, :method => 'get' do %> 
    <p> 
    Location: <%= text_field_tag :location, params[:location] %> 
<br /> 
    Country: <%= country_select :country, [ "United Kingdom", "France", "Germany" ] %> 
<br /> 
    Gender: <%= select_tag :gender, options_for_select(ApplicationHelper::GENDER, params[:gender]) %> 
<br /> 
    Ethnicity: <%= select_tag :ethnicity, options_for_select(ApplicationHelper::ETHNICITY, params[:ethnicity]) %> 
<br /> 

    Marital status: <%= select_tag :marital_status, options_for_select(ApplicationHelper::MARITAL_STATUS, params[:marital_status]) %> 
<br /> 
    Sexual preference: <%= select_tag :sexual_preference, options_for_select(ApplicationHelper::SEXUAL_PREFERENCE, params[:sexual_preference]) %> 
<br /> 
    <%= submit_tag "Search", :name => nil %> 
    </p> 
    <% end %> 

,你可以看到每個陣列有一個字符串和一個整數。如果您從country_select gem中檢出數組,則只有字符串。

我希望能夠盡我所能做到最好的方式的解釋和一個清晰的例子,如果可能的話。

我希望這篇文章有意義。

親切的問候

回答

1

我結束從wikipedia重新創建國家和國家的名稱和ISO代碼的值作爲值。更直截了當的是,我將各個國家作爲iso代碼存儲起來,並以整數的形式存儲,從而可以在思考sphinx時使用該屬性。

0

創建像你其他過濾器一樣的常數。然後使用虛擬屬性來轉換和設置值,以便可以存儲int版本而不是字符串。

編輯:

也許我不明白我們究竟在談論,但如果你想存儲在模型中的價值的地方,你可以做這樣的事情:

def country_int(country_s) 
    country = COUNTRY[country_s] 
end 

def country_int 
    COUNTRY.key(country) 
end 
+0

聽起來很簡單,我不知道我知道該怎麼做。我的意思是我可以做的虛擬屬性,但後來翻譯和設置我覺得有點丟失閱讀的價值。 – LondonGuy 2012-01-29 17:49:18

相關問題