Sha256: 6a929cb2e20c92e263bfd161fc747c8f6a410e047b8f98c4d949a341f4444c2f

Contents?: true

Size: 734 Bytes

Versions: 11

Compression:

Stored size: 734 Bytes

Contents

# Participants rate their emotions a name and intensity
class Emotion < ActiveRecord::Base
  belongs_to :creator, class_name: "Participant"
  has_many :emotional_ratings, dependent: :destroy

  validates :creator, presence: true
  validates :name, presence: true
  validates :name, uniqueness: { scope: :creator_id }
  validates :name, length: { maximum: 255 }

  before_validation :normalize_name

  def self.associate(participant, name)
    find_or_create_by(
      creator_id: participant.id,
      name: normalized_name(name)
    )
  end

  private

  def self.normalized_name(n)
    n.strip.downcase
  end

  def normalize_name
    if name.respond_to?(:strip)
      self.name = self.class.normalized_name(name)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
think_feel_do_engine-3.19.9 app/models/emotion.rb
think_feel_do_engine-3.19.8 app/models/emotion.rb
think_feel_do_engine-3.19.7 app/models/emotion.rb
think_feel_do_engine-3.19.6 app/models/emotion.rb
think_feel_do_engine-3.19.5 app/models/emotion.rb
think_feel_do_engine-3.19.4 app/models/emotion.rb
think_feel_do_engine-3.19.3 app/models/emotion.rb
think_feel_do_engine-3.19.2 app/models/emotion.rb
think_feel_do_engine-3.19.1 app/models/emotion.rb
think_feel_do_engine-3.19.0 app/models/emotion.rb
think_feel_do_engine-3.18.0 app/models/emotion.rb