Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3.1 如何设置第一个用户';默认情况下,是否将数据id设置为1?_Ruby On Rails 3.1 - Fatal编程技术网

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回调,示例如下: