Rails我应该如何为客户存储城市和州

时间:2015-06-12 15:03:14

标签: ruby-on-rails ruby rails-activerecord

我有一个Ruby on Rails应用程序,其客户模型需要相关的城市/州。为状态添加字符串列可能会导致我的同事错过键入位置,我将很难找到给定城市中的所有客户。为仅包含名称的城市创建模型似乎过多。

存储这个的正确方法是什么,以便我可以在以后找到我的客户?

2 个答案:

答案 0 :(得分:2)

如果错误输入是一个问题,请将该列保留为文本,但将其作为select而不是input标记。

您还可以验证该列以查看它与状态列表匹配

对于列表,您可以将其保存在常量中以保持其可访问性,如

class User

    STATES = Array[ ["AK", "Alaska"], 
                    ["AL", "Alabama"], 
                    ["AR", "Arkansas"], 
                    ["AS", "American Samoa"], 
                    ["AZ", "Arizona"], 
                    ["CA", "California"], 
                    ["CO", "Colorado"], 
                    ["CT", "Connecticut"], 
                    ["DC", "District of Columbia"], 
                    ["DE", "Delaware"], 
                    ["FL", "Florida"], 
                    ["GA", "Georgia"], 
                    ["GU", "Guam"], 
                    ["HI", "Hawaii"], 
                    ["IA", "Iowa"], 
                    ["ID", "Idaho"], 
                    ["IL", "Illinois"], 
                    ["IN", "Indiana"], 
                    ["KS", "Kansas"], 
                    ["KY", "Kentucky"], 
                    ["LA", "Louisiana"], 
                    ["MA", "Massachusetts"], 
                    ["MD", "Maryland"], 
                    ["ME", "Maine"], 
                    ["MI", "Michigan"], 
                    ["MN", "Minnesota"], 
                    ["MO", "Missouri"], 
                    ["MS", "Mississippi"], 
                    ["MT", "Montana"], 
                    ["NC", "North Carolina"], 
                    ["ND", "North Dakota"], 
                    ["NE", "Nebraska"], 
                    ["NH", "New Hampshire"], 
                    ["NJ", "New Jersey"], 
                    ["NM", "New Mexico"], 
                    ["NV", "Nevada"], 
                    ["NY", "New York"], 
                    ["OH", "Ohio"], 
                    ["OK", "Oklahoma"], 
                    ["OR", "Oregon"], 
                    ["PA", "Pennsylvania"], 
                    ["PR", "Puerto Rico"], 
                    ["RI", "Rhode Island"], 
                    ["SC", "South Carolina"], 
                    ["SD", "South Dakota"], 
                    ["TN", "Tennessee"], 
                    ["TX", "Texas"], 
                    ["UT", "Utah"], 
                    ["VA", "Virginia"], 
                    ["VI", "Virgin Islands"], 
                    ["VT", "Vermont"], 
                    ["WA", "Washington"], 
                    ["WI", "Wisconsin"], 
                    ["WV", "West Virginia"], 
                    ["WY", "Wyoming"] ]

...

end

然后通过User :: STATES

访问它

答案 1 :(得分:0)

您没有说为什么您需要此信息,但(假设这是美国城市/州)存储邮政编码更准确 - “城市”+“州”是保证是唯一的。