1

次のコードがあります。

#/app/models/users/user.rb
class Users::User < ActiveRecord::Base
  has_many :phones, class_name: "Users::Phone"
end

#/app/models/users/phone.rb
class Users::Phone < ActiveRecord::Base
  belongs_to :user, class_name: "Users::User"
  attr_accessible :phone
end


#/app/models/ability.rb
class Ability
  include CanCan::Ability

  def initialize(user)

    can :read, :all

    unless user.nil? #logged_in
      if user.is? :admin
        can :manage, :all
      else
        can :create, Users::Phone, user_id: user.id
      end
    end

  end
end

ユーザー用に自分の電話のみを作成する機能を確認したい

#/app/views/users/users/show.html.slim
- if can? :create, Users::Phone.new
  a[href="#{new_user_phone_path(@user)}"] Add phone

user_id を phone モデル (のようにUsers::Phone.new user_id: user.id) に渡す必要があるため、それは機能しませんが、Phone の大量割り当て以降はそれを行うことができません。

:createでは、ユーザーの電話機能を確認するにはどうすればよいですか?

4

1 に答える 1