Rails Authlogic предотвращает изменение пользователем своего логина / имени пользователя - PullRequest
1 голос
/ 20 апреля 2010

Я реализовал Authlogic. Я полагаю, что это не специфический автогенный вопрос. Предположим, у меня есть модель User, и у каждого пользователя в базе данных есть столбец с именем «login».

После создания пользователя столбец входа заполняется. Тем не менее, я не хочу, чтобы пользователь мог изменить свой логин после его установки.

В настоящее время я удалил текстовое поле в файле _form.html.erb в своих представлениях для пользователей. Тем не менее, это, вероятно, все еще можно получить доступ через URL-адрес правильно?

Как сделать так, чтобы после установки логина его вообще нельзя было изменить?

1 Ответ

4 голосов
/ 20 апреля 2010

Насколько я знаю, Authlogic обрабатывает этот случай для вас, поэтому вам не нужно беспокоиться о том, что кто-то перезаписывает свое имя пользователя. Чтобы обработать этот тип случая в целом, вы можете установить имя пользователя в качестве защищенного атрибута, исключив его из атрибутов attr_accessible в модели и назначив его непосредственно в действии create UserController, которое обходит защиту массового назначения в один случай, когда вы делаете хотите установить его. Например:

class User < ActiveRecord::Base
  attr_accessible :email, :password, :other_field1, :other_field2 # note username is not listed
end

class UserController < AppController
  def create
    @user = User.new(params[:user])
    @user.username = params[:user][:username]
    @user.save
    # ...
  end
end
...