メンバーまたは管理者の役割を持つ多くのユーザーがいるデータベース設定があります。各ユーザーは多くの車を所有しています。各車には多くのタイムスリップがあります
では、ユーザーが親車の所有者である場合にのみタイムスリップを編集できるように制限するにはどうすればよいでしょうか。
カンカンで:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.has_role? :admin
can :manage, :all
elsif user.has_role? :member
can :manage, Car, :user_id => user.id
can :manage, Timeslip, :car => {:user_id => user.id}
end
end
end
そのため、この行can :manage, Timeslip, :car => {:user_id => user.id}
は私が助けを必要としている場所です。
Timeslip は Car の関連付け/子であるため、親 car.user_id = Cancan user.id であることを確認する必要があります。
これをどのように書いたかはCanCanのドキュメントに沿っていると思いましたが、どこが間違っていますか?