То, как вы это делаете, не мешает «массовому назначению».
«Массовое присвоение» - это термин, используемый, когда Rails обрабатывает присвоение значений атрибутам в модели. Обычно это делается в контроллере, используя имена и значения в params
.
Когда вы делаете назначение себя, это также «массовое назначение», в некотором смысле; но у вас есть хороший контроль над тем, что назначать, а что нет в этом случае. Таким образом, чтобы сохранить запись этого стандартного кода назначения, Rails предоставляет attr_accesible
- тот же элемент управления, меньше кода.
Чтобы увидеть, как это используется:
Предположим, что модель ActivityLog
имеет атрибут с именем user_ip_address
.
Теперь user_ip_address
является атрибутом в модели, и может быть назначен массовым назначением или "самопрокатным массовым назначением".
Но в обоих случаях это неправильно - вы не хотите, чтобы пользовательский ввод устанавливал значение для этого атрибута.
Вместо этого вы всегда хотите узнать фактический IP-адрес пользователя и присвоить это значение (игнорируя любые
значение в params
). Таким образом, вы исключаете user_ip_address
из attr_accessible
и вместо этого назначаете его самостоятельно.
attr_accessible :all_attributes_except_user_ip_address
@al = ActivityLog.new(params[:model_object_params])
@al.user_ip_address = get_origin_user_ip_address
@al.save
Для любой информации, которую пользователь не может изменить, используйте attr_accessible
и исключите ее из списка.