使用命名空间模型更新失败

时间:2012-02-29 22:32:31

标签: ruby-on-rails model namespaces

我在Rails 3中为管理员用户提供了一个更新表单,尽管已经过验证,但仍然无声地失败。之前 正在工作,但当我将所有内容移动到命名空间时,它就不再保存了。

以下是我的控制器的相关代码:

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| %>

所有内容都正确加载,但是当我尝试保存时,我的验证将被忽略,并且会重定向到索引页面并显示成功消息,但不保存数据。我有一种感觉,我错过了与命名空间有关的事情,但我不完全确定问题是什么。它可以在基础模型目录中寻找模型吗?

2 个答案:

答案 0 :(得分:1)

你检查过params了吗?我可以想象params[:admin]不再包含表单值。

答案 1 :(得分:0)

所以,VirtuosiMedia和我逐步完成了它,并且RoR添加了一个“admin_”来表示Admin ::名称空间,所以我们不得不寻找params [:admin_admin]。