2

https://github.com/ryanb/cancan/wiki/Abilities-in-Databaseにある最初の 2 つのコード ブロックの長所と短所は何でしょうか。

def initialize(user)
  can do |action, subject_class, subject|
    user.permissions.find_all_by_action(aliases_for_action(action)).any? do |permission|
      permission.subject_class == subject_class.to_s &&
      (subject.nil? || permission.subject_id.nil? || permission.subject_id == subject.id)
    end
  end
end

def initialize(user)
  user.permissions.each do |permission|
    if permission.subject_id.nil?
      can permission.action.to_sym, permission.subject_class.constantize
    else
      can permission.action.to_sym, permission.subject_class.constantize, :id => permission.subject_id
    end
  end
end

どちらも私には問題ないようです...おそらく方法#1はパフォーマンスが低いですか?たぶん、方法#2は柔軟性が低いですか?

4

1 に答える 1