Ruby on rails 3.1 如何设置第一个用户';默认情况下,是否将数据id设置为1?
我有两个模型,Ruby on rails 3.1 如何设置第一个用户';默认情况下,是否将数据id设置为1?,ruby-on-rails-3.1,Ruby On Rails 3.1,我有两个模型,User和Client,具有以下关系 用户有很多:客户端 客户端属于:用户 默认情况下,如何使所有注册用户都有自己的第一个:client_id=>“1”?因此,您希望所有新用户都默认为第一个客户端。您不想设置默认id号,您要做的是将其设置为客户机表中第一个客户机的id 因此,在您的users\u controller#new操作中,您所要做的就是将client\u id字段设置为第一个客户端的id,如下所示: class UsersController < Applica
User
和Client
,具有以下关系
- 用户
有很多:客户端
- 客户端
属于:用户
默认情况下,如何使所有注册用户都有自己的第一个:client_id=>“1”?因此,您希望所有新用户都默认为第一个客户端。您不想设置默认id号,您要做的是将其设置为
客户机
表中第一个客户机
的id
因此,在您的users\u controller#new
操作中,您所要做的就是将client\u id
字段设置为第一个客户端的id
,如下所示:
class UsersController < ApplicationController
...
def new
@user = User.new(:client_id => Client.first.id)
end
end
class UsersControllerclient.first.id)
结束
结束
这样,当保存新的用户
记录时,除非用户自己明确更改了值,否则它将始终指向数据库中的第一条客户
记录
您不想将其默认为1
的原因是,如果您这样做,并且您曾经从表中销毁该客户端,则1
的client\u id
将指向一条不存在的记录,并且在此之后,您与所有新用户的关系将中断。即使你认为这种情况不会发生,编写代码时最好能处理这种情况,而不是认为这种情况永远不会发生。谢谢你的帮助。正常情况下。但是我如何才能对多个子模型做同样的事情呢?比如说,对于用户有很多:客户端,:服务,当您创建服务时
?您只需要在创建它们时指定一个默认值。如果您要.build
”创建这些新模型,则需要在循环中迭代所有新对象,并手动设置适当的[model]\u id
字段。也就是说,当您实例化这些新对象时,无论是通过.new
还是.build
还是其他方式,也就是(在将记录保存到数据库之前)设置关联的ID字段可能是最容易的。如果不方便,您还可以在任何ActiveRecord祖先上的保存前、保存后或类似回调方法中设置子[model]\ID
字段。参考ActiveRecords回调,示例如下: