Как установить идентификатор данных первого пользователя на 1 по умолчанию? - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть 2 модели, User и Client со следующими отношениями.

  • Пользователь has_many :clients
  • Клиент belongs_to :user

Как сделать так, чтобы все зарегистрированные пользователи имели свои первые: client_id => "1", по умолчанию?

1 Ответ

1 голос
/ 15 декабря 2011

Итак, вы хотите, чтобы все новые пользователи по умолчанию использовали первый клиент. Вы не хотите устанавливать номер идентификатора по умолчанию, вам нужно установить id первого Client в вашей таблице 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 из 1 будет указывать на несуществующую запись и ваши отношения разорвутся для всех новых пользователей после того, как это произойдет. Даже если вы думаете, что такой ситуации не произойдет, лучше написать свой код таким образом, чтобы он мог справиться с этой ситуацией, чем думать, что этого никогда не произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...