diff --git a/app/models/asciicast.rb b/app/models/asciicast.rb index 58cb7bf..b69efc2 100644 --- a/app/models/asciicast.rb +++ b/app/models/asciicast.rb @@ -13,6 +13,11 @@ class Asciicast < ActiveRecord::Base attr_reader :description + def self.assign_user(user_token, user) + where(:user_id => nil, :user_token => user_token). + update_all(:user_id => user.id, :user_token => nil) + end + def meta=(file) data = JSON.parse(file.tempfile.read) diff --git a/spec/models/asciicast_spec.rb b/spec/models/asciicast_spec.rb index cba5aad..708c899 100644 --- a/spec/models/asciicast_spec.rb +++ b/spec/models/asciicast_spec.rb @@ -5,6 +5,23 @@ describe Asciicast do Factory.build(:asciicast).should be_valid end + describe '.assign_user' do + let(:user) { Factory(:user) } + let(:token) { 'token' } + let!(:asciicast) { Factory(:asciicast, :user => nil, :user_token => token) } + + subject { Asciicast.assign_user(token, user) } + + it 'returns number of updated records' do + subject.should == 1 + end + + it 'assigns user to matching asciicasts' do + subject + asciicast.reload.user.should == user + end + end + describe '#save' do let(:asciicast) { Factory.build(:asciicast, :user => user) }