2

我有两种情况,但都解决了相同的结果。这两种情况都涉及尝试通过 Rails_admin 更新记录,两个模型都具有“belongs_to :user”关联。

场景 1:我需要更新属于用户的视频记录。如果我尝试更改分配此视频的用户,则 user_id 将始终更改为登录到 Rails_Admin 的管理员的 user_id。无论我尝试编辑的字段如何,user_id 都会更改为当前登录的管理员。

场景 2:我需要更新属于用户的个人资料记录上的信用金额。再一次,即使用户不可见,无论我更改哪个字段,user_id 都会更改为当前登录的管理员的 user_id。

建议?

4

2 回答 2

1

我有同样的问题,我通过改变我的能力来解决它,以避免能力重叠。这意味着,如果用户是管理员,那么他将不会为其他用户设置权限。

对我来说导致错误的重叠示例:

user ||= User.new # guest user (not logged in)

can :manage, Video, user: user
if user.admin?
  can :manage, Video
end

这应该改为:

user ||= User.new # guest user (not logged in)

if user.admin?
  can :manage, Video
else
  can [:crud], Video, :user_id => user.id
end  
于 2013-11-04T10:32:16.557 回答
0

Sounds like you have an issue with your cancan configuration.

check for lines like:

can :manage, Video, user: user

In that case, RailsAdmin will override any value for user_id to current_user.

于 2013-05-06T08:16:02.497 回答