在Rails

时间:2015-05-26 20:13:29

标签: ruby-on-rails

所以我在我的Rails应用程序中有一个Customer模型,每当创建一个新客户时,我从用户那里得到一个数字作为输入,我希望该数字成为我数据库中客户的id而不是默认值1 ,2,3等等。有可能吗?如果是这样,怎么样?

编辑:让我更清楚一下我的想法:我有一个客户和一个品牌模型。客户拥有多个品牌,品牌属于客户。每当用户创建新品牌时,我都希望使用用户为客户输入的号码将其连接到客户。现在,每当用户创建一个新品牌时,我都要求他输入customer_id值以将品牌连接到客户,但这是Rails生成的ID号。如何使customer_id属性引用用户为客户输入的特定数字,而不是Rails生成的客户ID。

2 个答案:

答案 0 :(得分:1)

这是可能的,但不要这样做。只需允许Rails管理自动生成的ID本身,并将此数字 - 无论它是什么 - 添加为模型中的单独属性并保存到数据库中的单独字段。

答案 1 :(得分:0)

如上所述,您可以执行以下操作:

1.首先,生成一个添加自定义属性的迁移

rails g migration AddCustomerIdToCustomers customer_id:integer

2.当用户输入ID时,您可能希望执行以下操作:

@customer.customer_id=params[:customer_id]
@customer.save

3.然后您可以将自定义对象检索为

@customer = Customer.find_by_customer_id(customer_id)

其中customer_id是您想要的ID。

正如上面的答案所示,最好让Rails处理id属性,因为它在Rails中广泛用于处理数据库关系ActiveRecord查询等。你不希望自己修改它的额外麻烦。