Sha256: 94cf7eb6f5f3e835702a6ace738e34c0ad1667059732de593c9517e24e420010

Contents?: true

Size: 811 Bytes

Versions: 7

Compression:

Stored size: 811 Bytes

Contents

require 'digest/sha1'

class Likeable::Like
  attr_accessor :created_at, :target, :like_user, :user_id

  def initialize(options = {})
    self.created_at = Time.at(options[:time].try(:to_f)||Time.now)
    self.target     = options[:target]
    self.user_id    = options[:user].try(:id) || options[:user_id]
    self.like_user  = options[:user]
  end

  def id
    Digest::SHA1.hexdigest("#{user_id}#{target.class}#{target.id}#{created_at}")
  end

  def user
    @user ||= like_user
    @user ||= Likeable.find_one(User, user_id)
    @user
  end

  def to_hash(type=:full)
    {
      :created_at => created_at.iso8601,
      :type       => target.class.name.gsub(/^[A-Za-z]+::/, '').underscore.downcase.to_sym,
      :target     => target.to_hash(type),
      :user       => user.to_hash(type)
    }
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
likeable-0.1.1 lib/likeable/like.rb
likeable-0.1.0 lib/likeable/like.rb
likeable-0.0.5 lib/likeable/like.rb
likeable-0.0.4 lib/likeable/like.rb
likeable-0.0.3 lib/likeable/like.rb
likeable-0.0.2 lib/likeable/like.rb
likeable-0.0.1 lib/likeable/like.rb