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" 不 保证是唯一的。
我在 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" 不 保证是唯一的。