如何将默认情况下第一个用户的数据ID设置为1?

时间:2011-12-15 14:36:02

标签: ruby-on-rails-3.1

我有2个模型,UserClient具有以下关系。

  • 用户has_many :clients
  • 客户belongs_to :user

如何让所有注册用户拥有他们的第一个:client_id => “1”,默认情况下?

1 个答案:

答案 0 :(得分:1)

因此,您希望所有新用户都默认使用第一个客户端。您不想设置默认ID号,您要执行的操作是将其设置为id表中第一个Client的{​​{1}}。

因此,在您的clients操作中,您所要做的就是将users_controller#new字段设置为第一个客户端的client_id,如下所示:

id

这使得当保存新的class UsersController < ApplicationController ... def new @user = User.new(:client_id => Client.first.id) end end 记录时,除非用户自己显式更改了值,否则它将始终指向数据库中的第一个User记录。

您不希望将其默认为Client的原因是因为如果您这样做,并且您曾从表中销毁该客户端,那么1 client_id将指向对于不存在的记录,在此之后,您的关系将为所有新用户中断。即使您认为情况不会发生,最好以能够处理这种情况的方式编写代码,而不是认为它永远不会发生。