所以我有一个模型,Lodge
,我有两个行为不正常的访问级别,但只在生产中(这使得调试它成为熊),并且仅在Lodge
的某些实例上。使用全新的数据库转储,在生产环境中运行时,本地计算机上不会发生这种情况。
在super_admin
角色中,有少数887个实体返回"未授权"当我尝试直接加载网址时,我收到404错误。
以下是展示问题的示例小屋:
2.4.0 :083 > @l = Lodge.find_by_combined('246B')
Lodge Load (1.5ms) SELECT "lodges".* FROM "lodges" WHERE "lodges"."combined" = $1 LIMIT $2 [["combined", "246B"], ["LIMIT", 1]]
=> #<Lodge id: 444, name: "Apachedotte", lodge_number: "246", designator: "B", combined: "246B", insignia: "Tree", chartered_on: nil, url: nil, status: "Superceded 1955", created_at: "2017-01-15 21:02:49", updated_at: "2017-04-29 10:33:51", council_id: nil, slug: "246b-apachedotte", name_translation: nil, membership: nil, membership_year: nil, membership_details: nil, featured_issue_id: nil, no_known_issues: nil, renumbered_on: nil, renumbering_detail: nil, facebook_url: nil, pronunciation: nil, instagram_url: nil, twitter_url: nil, phonetic_spelling: nil, history: nil, notes: nil>
展示行为的所有小屋(保存一个)都有&#34; 46&#34;在他们的lodge_number
值。异常值是168B(但不是168A,很有趣)。只有JUST 46的两个小屋(例如不是46x或x46)不会表现出这种行为。
超级管理员权限:
Canard::Abilities.for(:super_admin) do
can :manage, :all
end
Admin privs:
Canard::Abilities.for(:admin) do
includes_abilities_of :user
can :manage, Annotation
can :manage, BorderType
can :manage, Council
can :manage, IssueSet
can :manage, Issue
can :manage, Lodge, editorships: { editor: user }
can :manage, Manufacturer
end
非超级用户角色由editorships
模型进行身份验证,但由于这会在绕过的级别上持续存在于相同的实例上,因此它似乎是另一种情况。
编辑是一个很好的:通过用户(作为编辑)和住宿之间的关系。我们进行了直通设置,以便将来对每个编辑进行更细粒度的访问。
最初有404错误,但是通过删除editor_id为零的任何编辑来解决这个问题。
以及展示此内容的实体列表(寄宿编号+指示符或组合值):
146A
168B
246A
246B
246C
246D
346A
346B
446A
460A
461A
462A
463A
464A
465A
466A
467A
467B
468A
469A
546A