Module: Joinable::ActsAsPermissable::ClassMethods

Included in:
Joinable::ActsAsJoinable::ClassMethods, Joinable::ActsAsJoinableComponent::ClassMethods
Defined in:
lib/joinable/acts_as_permissable.rb

Instance Method Summary collapse

Instance Method Details

#find_with_privacy(record_id, user, options = {}) ⇒ Object

Raises:

  • (ActiveRecord::RecordNotFound)


5
6
7
8
9
10
11
# File 'lib/joinable/acts_as_permissable.rb', line 5

def find_with_privacy(record_id, user, options = {})
	record = find(record_id)
			
	raise ActiveRecord::RecordNotFound, (options[:error_message] || "Couldn't find #{name}") unless user.permission_to?(:find, record)
		
  return record
end

#permission_sql_condition(column, permission, options = {}) ⇒ Object

Returns an SQL fragment for a WHERE condition that checks the given column for the given permission



25
26
27
28
# File 'lib/joinable/acts_as_permissable.rb', line 25

def permission_sql_condition(column, permission, options = {})
  permission = "'#{permission}'" unless options[:raw]
  "#{permission} = ANY(#{column})"
end

#with_permission(user, permission) ⇒ Object

Returns all records where the given user has the given permission



14
15
16
# File 'lib/joinable/acts_as_permissable.rb', line 14

def with_permission(user, permission)
  where(with_permission_sql(user, permission))
end

#with_permission_sql(user, permission, options = {}) ⇒ Object

Returns an SQL fragment for a WHERE condition that evaluates to true if the user has the given permission For use when asking

Raises:

  • (NotImplementedError)


20
21
22
# File 'lib/joinable/acts_as_permissable.rb', line 20

def with_permission_sql(user, permission, options = {})
  raise NotImplementedError
end