Rails - 对象的类型是否应该在自己的模型中?

时间:2010-02-03 07:53:58

标签: ruby-on-rails forms select model nested-forms

我有联系人,请联系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而无法实现。

如果第一个选项实际上是更好的方法,那么在通过选择编辑手机描述时,您是否有任何关于如何将对象值作为选定值的见解?

2 个答案:

答案 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”翻译成日语时可能会让你头疼。