我正在玩 Rails 3.2.13 和 strong_parameters gem。我想知道在开发测试时是否应该得到一个引发的异常ActiveModel::ForbiddenAttributes
?
我的 Post 模型有一个:title
,:content
但如果我:title
从许可中删除,我不会收到错误消息,但我确实会被重定向回带有 flash 通知的编辑页面,因此它保存了记录。虽然,它并没有改变 ,这是:title
理所当然的。这是默认行为吗?
def post_params
params.require(:post).permit(:content)
end
我想知道是否需要做其他事情来获得引发的异常。
宝石文件:
# Gemfile
gem 'rails', '3.2.13'
gem "strong_parameters"
应用配置:
# config/application.rb
config.active_record.whitelist_attributes = false
岗位型号:
# post.rb model
class Post < ActiveRecord::Base
include ActiveModel::ForbiddenAttributesProtection
end
后控制器:
# post_controller.rb
class PostsController < ApplicationController
def update
@post = Post.find(params[:id])
if @post.update_attributes(post_params)
redirect_to edit_post_path(@post), flash { success: "Post updated" }
else
render "edit"
end
end
private
def post_params
params.require(:post).permit(:title, :content)
end
end