Ruby on rails 更改Rails中新对象的ID

Ruby on rails 更改Rails中新对象的ID,ruby-on-rails,Ruby On Rails,因此,我在Rails应用程序中有一个客户模型,每当创建新客户时,我都会从用户那里获得一个数字作为输入,我希望该数字成为我数据库中客户的id,而不是默认的1、2、3等等。有可能吗?如果是,怎么做 编辑:让我更清楚地说明我想要什么:我有一个客户和一个品牌模型。一个客户拥有许多品牌,而一个品牌属于一个客户。每当用户创建新品牌时,我都希望使用用户为客户输入的号码将其连接到客户。现在,每当用户创建一个新品牌时,我要求他输入customer_id值以将品牌连接到客户,但这是Rails生成的id号。如何使cu

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


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

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

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

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查询等。您不希望自己修改它会带来额外的麻烦

^这个。。。省去你自己的头疼,让Rails来做它的事情:)但是我希望能够根据这个数字,而不是Rails生成的id号来引用客户。我有办法做到吗?对不起,我是Rails新手。是的,您可以@MPorto。只需在模型/迁移中包含一个属性,如
customer\u id
。最好使用人们不会与常规Rails外键混淆的字段/属性名称,如
code
number
。您可能还想看看gem之类的东西,它从您的
id
中提供可预测的代码,而不存储任何不同的内容。