Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### Dynamic Permissions
- ```User < ActiRecord::Base
- has_many :roles
- has_many :permission, through: :roles
- has_many :user_roles
- has_many :custom_permissions
- end
- UserRole < Base
- belongs_to :user
- belongs_to :role
- end
- Role < Base
- has_many :permissions
- has_many :users
- end
- RolePermission < Base
- belongs_to :role
- belongs_to :permission
- end
- CustomPermission < Base
- belongs_to :user
- belongs_to :permission
- end
- Permission < Base
- has_many :roles
- end
- user.roles = [role1, role2]
- user.save
- user.roles << new_role
- ```
- ### Cache class
- ```
- class Cache
- @@storage = {}
- def self.set(key,value)
- @@storage[key] = StoredObject.new(value, 1.day.from_now)
- end
- def self.get(key)
- element = @@storage[key]
- if !element.nil?
- if element.expired?
- @@storage.delete(key)
- return nil
- else
- return element.value
- end
- end
- end
- def self.size
- @@storage.size
- end
- def self.delete(key)
- @@storage.delete(key)
- end
- end
- class StoredObject
- initialize(value, expiration_date)
- @value = value
- @expiration_date = expiration_date
- end
- private
- def expired?
- expiration_date < Date.today
- end
- attr_reader :value, expiration_date
- end
- ```
- ### MySQL
- ```SELECT AVG(e.salary), p.Department as average_salary from Project p left join Members m on m.project_id = p.project_id left join Employee e on e.id = m.employee_id group by p.Department, e.id;```
Add Comment
Please, Sign In to add comment