我有联系人,请联系has_many:电话。电话表有一个名为phones_desc的列,我想在其中包含用户保存的电话号码类型。
我的问题/最佳做法
我是否应该提供手动提供的选项(例如“移动”,“工作”,“家庭”)......
-OR -
...创建一个名为phones_types的新模型,我可以在其中添加我想要的值,从而为每个模型创建一个唯一的ID。然后我可以在将phone_desc更改为phone_type_id之后执行以下操作,添加电话has_many:phone_types并为phone_types表提供名称列:
@phone = Phone.first
@phone.type.name
旁注
我目前正在使用第一个选项(不是单独的模型),并且在编辑父对象时选择值时遇到问题。换句话说,在编辑电话号码时,选择选项没有选择保存的值。
它始终选择了第一个选项,因此用户可能会无意中更改phone_desc而无法实现。
如果第一个选项实际上是更好的方法,那么在通过选择编辑手机描述时,您是否有任何关于如何将对象值作为选定值的见解?
答案 0 :(得分:0)
事实证明,选项一可以正常工作,我也可以选择选项。这是我认为选项参数的顺序问题。
我改变了:
<%= f.select :number_desc, '<option value="mobile">Mobile</option><option value="work">Work</option><option value="home">Home</option><option value="other">Other</option' %>
为:
<%= f.select :number_desc, [["Mobile", "mobile"], ["Work", "work"], ["Home", "home"], ["Other", "other"]] %>
瞧 - 选择的作品很好。 :)
答案 1 :(得分:0)
我仍然会为手机类型选择一个单独的型号。这样,您可以稍后更轻松地添加其他手机类型。另外想想i18n,在将“Mobile”翻译成日语时可能会让你头疼。