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

Под rails 3.1. Если я создам новый проект rails и создаю новый ресурс, подобный этому:

rails g scaffold User name:string email:string

Действие создания будет таким по умолчанию:

def create
  @user = User.new(params[:user])
  respond_to do |format|
    if @user.save
      ...
    else
      ...
    end
  end
end

Что меня интересует, так как в модели User не определено attr_accessible, почему это создание будет работать, если я отправлю форму в это действие. Поскольку attr_accessible будет разрешать массовое назначение, но что здесь по умолчанию?

1 Ответ

3 голосов
/ 23 октября 2011

По умолчанию в Rails разрешено массовое назначение любых атрибутов базы данных, вам не нужно будет определять это имя и строку электронной почты в контексте attr_accessible, чтобы они могли быть назначены массово.

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

Аналогично, attr_protected используется для определения черного списка атрибутов, которые нельзя использовать при массовом назначении.

Ничего из этого не происходит , если вы не определите эти свойства , поэтому ваш код работает нормально без attr_accessible. Я лично предпочитаю подход белого списка, а не черный список, потому что он намного более безопасен. Хотя ваше приложение работает без attr_accessible, в конце концов, рекомендуется в любом случае использовать их в качестве меры безопасности.

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