Rails 如何在非 rails 的程序中用 activerecord 4.0 的 strong_parameter

zhelee · 2013年08月28日 · 最后由 zhelee 回复于 2013年08月28日 · 2669 次阅读

好像 strong_parameter 是在 controller 层去定义,我现在用 grape 做 api,存储还是用 active_record,请问怎样在这种情况下怎么用 strong_parameter,或者我的思路已经错了?

简单点用 slice 就够了,strong_parameter 依赖 rails 的组件。

#1 楼 @Rei slice 是什么呢?

奥,搜了下才发现是 activesupport 的扩展 http://apidock.com/rails/Hash/slice

#3 楼 @Rei 还是不太明白你的意思,我现在用 activerecord 保存无法成功,怎样用 slice 就成功了呢?

#4 楼 @zhelee strong_parameter 用途不是过滤非法参数嘛,slice 也能达到目的,只不过如果漏写了也不会抛出异常。

post = Post.new params[:post].slice(:title, :body) # 只接受 :title, :body 参数

#5 楼 @Rei 我再看看,谢谢

@Rei

l = League.new(full_name: 'foo', short_name: 'bar')
WARNING: Can't mass-assign protected attributes for League: full_name, short_name

我的问题是这个

#5 楼 @Rei rails3 用 attr_accessible,现在不用这个了,用 strong_parameter,而这个又只能用在 controller 里,我不明白你说的 slice 是怎么解决这个问题的

#8 楼 @zhelee 关掉属性白名单。

#9 楼 @Rei 非常感谢。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号