保存到数据库问题

时间:2014-06-23 23:05:30

标签: ruby-on-rails database crud

我正在构建一个数据库,我的创建操作遇到了问题。我的创建操作代码是:

 def create
        @skills = Skill.new(params[:skill])
      if @skills.save
            redirect_to :action => 'index'
      else
            @skills = Skill.find(:all)
            render :action => 'new'
      end
   end

我的错误信息是:

ActiveModel::ForbiddenAttributesError in SkillsController#create
ActiveModel::ForbiddenAttributesError

我认为存在问题而且我没有保存所有需要的参数,但我不确定。感谢任何知道可能出现问题的人,我会继续自己搞乱。再次感谢。

1 个答案:

答案 0 :(得分:3)

在你的控制器中添加如下内容:

private

  def skill_params
    params.require(:skill).permit(:attribute_1, :attribute_2, :attribute_3)
  end

然后将create更改为:

def create
  @skills = Skill.new(skill_params)
  if @skills.save
    redirect_to :action => 'index'
  else
    @skills = Skill.find(:all)
    render :action => 'new'
  end
end

这是特定于Rails 4:这个版本的ruby on rails fordids直接使用params来实例化一个新的Model对象。

通过保护应用程序免受某些漏洞攻击,使您的应用程序更加安全:例如,假设有人请求您的应用程序创建新用户并将admin: true作为参数传递。旧方法可能会创建管理员用户。相反,Rails 4方式强制您过滤参数。