从rails_admin中排除属性

时间:2013-09-11 16:51:12

标签: ruby-on-rails-3.2 rails-admin strong-parameters

我尝试将rails_admin与strong_parameters和awesome_nested_set一起使用。

可能由于令人敬畏的嵌套集,某些属性(如LftRgt)会显示在相应模型(类别)的 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 排除某些可编辑的属性?

3 个答案:

答案 0 :(得分:4)

我在Rails 4应用中遇到了同样的错误(acts_nested_setrails_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

到我的分类模型。