3

我尝试将 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排除某些可编辑的属性吗?

4

3 回答 3

4

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

仅此而已。

于 2014-02-06T12:05:02.860 回答
1

您可以尝试将lftrgt属性作为 permit_params 放在app/admin/model.rb上,如下所示:

permit_params :lft, :rgt

想想也行。

于 2014-02-06T12:34:15.820 回答
0

好吧,解决方案实际上非常简单。我只需要添加

attr_protected :lft, :rgt, :depth, as: :admin

到我的类别模型。

于 2013-09-12T09:05:19.277 回答