app/models/spotlight/role.rb in blacklight-spotlight-0.34.1 vs app/models/spotlight/role.rb in blacklight-spotlight-1.0.0.alpha1
- old
+ new
@@ -1,15 +1,13 @@
module Spotlight
##
# Exhibit authorization roles
class Role < ActiveRecord::Base
ROLES = %w(admin curator).freeze
- belongs_to :resource, polymorphic: true
- belongs_to :user, class_name: Spotlight::Engine.config.user_class, autosave: true
+ belongs_to :resource, polymorphic: true, optional: true
+ belongs_to :user, class_name: Spotlight::Engine.config.user_class, autosave: true, required: true
validates :role, inclusion: { in: ROLES }
- validates :user_key, presence: true
- validate :user_must_exist, if: -> { user_key.present? }
validate :user_must_be_unique, if: :user
def user_key
if user
@user_key = user.user_key
@@ -20,19 +18,14 @@
# setting user key causes the user to get set
def user_key=(key)
@user_key = key
self.user ||= Spotlight::Engine.user_class.find_by_user_key(key)
- user.user_key = key if user
+ self.user ||= Spotlight::Engine.user_class.invite!(email: user_key, skip_invitation: true)
+ user.user_key = key
end
protected
-
- def user_must_exist
- return if user.present?
-
- self.user ||= Spotlight::Engine.user_class.invite!(email: user_key, skip_invitation: true)
- end
# This is just like
# validates :user, uniqueness: { scope: :exhibit}
# but it puts the error message on the user_key instead of user so that the form will render correctly
def user_must_be_unique