0

我有一个联系人,并联系 has_many :phones。电话表有一个名为phones_desc 的列,我想在其中包含用户保存的电话号码类型。

我的问题/最佳实践

我是否应该提供带有手动提供选项的选择(例如“移动”、“工作”、“家庭”)...

-或者-

...创建一个名为phones_types 的新模型,我可以在其中添加我想要的值,从而为每个模型创建一个唯一的ID。然后我可以在将 phone_desc 更改为 phone_type_id 后执行以下操作,添加电话 has_many :phone_types 并为 phone_types 表提供一个名称列:

@phone = Phone.first
@phone.type.name

边注

我目前正在使用第一个选项(不是单独的模型)进行此操作,并且在我去编辑父对象时无法选择值。换句话说,选择选项在编辑电话号码时没有选择保存的值。

它总是选择第一个选项,因此用户可能会无意中更改 phone_desc 而不会意识到这一点。

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

4

2 回答 2

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"]] %>

瞧 - 选择工作正常。:)

于 2010-02-03T08:15:16.690 回答
0

我仍然会为手机类型选择单独的型号。这样,您以后可以更轻松地添加其他电话类型。还要考虑一下 i18n,在将“Mobile”翻译成日文时,它可能会让您头疼。

于 2010-02-03T08:25:38.010 回答