私は次の複雑な方法を持っています。私は可能な改善を見つけて実装しようとしています。今、私は最後のifステートメントをAccess
クラスに移動しました。
def add_access(access)
if access.instance_of?(Access)
up = UserAccess.find(:first, :conditions => ['user_id = ? AND access_id = ?', self.id, access.id])
if !up && company
users = company.users.map{|u| u.id unless u.blank?}.compact
num_p = UserAccess.count(:conditions => ['user_id IN (?) AND access_id = ?', users, access.id])
if num_p < access.limit
UserAccess.create(:user => self, :access => access)
else
return "You have exceeded the maximum number of alotted permissions"
end
end
end
end
リファクタリングの前にスペックも追加したいと思います。最初のものを追加しました。他の人のように見えるべきですか?
describe "#add_permission" do
before do
@permission = create(:permission)
@user = create(:user)
end
it "allow create UserPermission" do
expect {
@user.add_permission(@permission)
}.to change {
UserPermission.count
}.by(1)
end
end