У меня есть форма для обновления в Rails 3 для пользователей admin, которые терпят неудачу, несмотря на наличие валидаций. Это было, работавшим ранее, но когда я переместил все в пространство имен, оно больше не сохраняется.Обновление не выполнено с помощью модели с именами
Вот соответствующий код из моего контроллера:
def update
@admin = Admin::Admin.find(params[:id])
respond_to do |format|
if @admin.update_attributes(params[:admin])
flash[:success] = "'#{@admin.name}' was successfully updated."
format.html { redirect_to admin_admins_path }
else
format.html { render action: "edit" }
end
end
end
И модель (незавершенной, но ранее работал):
class Admin::Admin < ActiveRecord::Base
validates :name, :presence=>{:message=>"Name can't be blank"}
validates :email, :presence=>{:message=>"Email can't be blank"},
:length => {:minimum => 3, :maximum => 254, :message=>"Email must be between 3 and 254 characters"},
:uniqueness=>{:message=>"Email has already been registered"},
:format=>{:with=>/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :message=>"Email must be a valid email format"}
validates :password, :presence=>{:message=>"Password can't be blank"}
end
И первая часть формы частичной:
<%= form_for(@admin) do |f| %>
Все загружается правильно, но когда я пытаюсь сохранить, мои проверки игнорируются, и это перенаправляет на страницу с успешным сообщением, но не сохраняет данные. У меня такое чувство, что я пропускаю что-то с пространствами имен, но я не совсем уверен, в чем проблема. Может ли он искать модель в каталоге базовой модели?
Правильно, они пусты. Я думаю, что это проблема пространства имен, поскольку проверки не выполняются. – VirtuosiMedia
Валидации не жалуются на '@ admin.update_attributes (nil)'. – iltempo
Попробуйте выяснить, как вместо этого используется параметр Admin :: Admin. Не тестировал, но я мог представить что-то вроде 'params ['admin :: admin']. – iltempo