我尝试将rails_admin与strong_parameters和awesome_nested_set一起使用。
可能由于令人敬畏的嵌套集,某些属性(如Lft
和Rgt
)会显示在相应模型(类别)的 rails_admin 编辑视图中,并且可以编辑。一旦我更改了例如属性的名称并点击了保存按钮,我收到以下错误消息:
Unauthorized assignment to lft: it's an internal field handled by acts_as_nested_set
code, use move_to_* methods instead.
在我的应用程序的旧版本中,我可以从attr_accessible
列表中删除lft和rgt(我不想手动编辑它们)但是使用 strong_parameters 这似乎不是是可能的。
是否有任何战争我可以通过 rails_admin 排除某些可编辑的属性?
答案 0 :(得分:4)
我在Rails 4应用中遇到了同样的错误(acts_nested_set
和rails_admin
):
ActiveRecord::ActiveRecordError - Unauthorized assignment to lft: it's an internal field handled by acts_as_nested_set code, use move_to_* methods instead.:
awesome_nested_set (3.0.0.rc.3) lib/awesome_nested_set/awesome_nested_set.rb:127:in `lft='
...
出现了这个问题,因为在rails_admin中可以访问的字段很少。所以,我只是将它们排除在外:
rails_admin do
navigation_icon 'icon-phone'
edit do
exclude_fields :id, :lft, :rgt, :children, :depth
end
end
就是这样。
答案 1 :(得分:1)
您可以尝试在 app / admin / model.rb 上添加 lft 和 rgt 属性作为permit_params,如下所示:
permit_params :lft, :rgt
思考也会奏效。
答案 2 :(得分:0)
好吧,解决方案实际上非常简单。我只需要添加
attr_protected :lft, :rgt, :depth, as: :admin
到我的分类模型。