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

Rails how should I store city and state for a customer

我在 Rails 应用上有一个 Ruby,其客户模型需要相关的 city/state。为州添加一个字符串列可能会导致我的同事错误输入位置,而且我会更难找到给定城市中的所有客户。为一个只包含名称的城市创建模型似乎有些过分。

正确的存储方式是什么,以便我以后可以按城市找到我的客户?

如果输入错误是一个问题,请将该列保留为文本,但将其作为 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

访问它

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