active_metadata 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -36,7 +36,6 @@ module ActiveMetadata::Persistence::Attachment
36
36
 
37
37
  def update_attachment(id, newfile, starred=nil)
38
38
  a = ActiveMetadata::Attachment.find(id)
39
- puts a
40
39
  old_filename = a.attach.original_filename
41
40
  a.attach = newfile
42
41
  a.updated_by = current_user_id
@@ -10,8 +10,14 @@ module ActiveMetadata::Persistence::Watcher
10
10
  ActiveMetadata::Watcher.create! :document_class => metadata_class, :document_id => metadata_id, :label => field, :owner_id => owner.id
11
11
  end
12
12
 
13
+ # return all the watches related to a passed field.
14
+ # query always match for the current model
15
+ # matches are returned grouped by owner and contains records that define or not a particular model instance watching
13
16
  def watchers_for(field)
14
- ActiveMetadata::Watcher.all(:conditions => {:document_class => metadata_class, :label => field, :document_id => metadata_id})
17
+ ActiveMetadata::Watcher.where(
18
+ "document_class = :document_class AND label = :label AND (document_id = :document_id OR document_id IS NULL)",
19
+ { :document_class => metadata_class, :label => field, :document_id => metadata_id }
20
+ ).group("owner_id").all
15
21
  end
16
22
 
17
23
  def delete_watcher_for(field, owner)
@@ -1,3 +1,3 @@
1
1
  module ActiveMetadata
2
- VERSION = "0.7.2"
2
+ VERSION = "0.7.3"
3
3
  end
Binary file
@@ -57,4 +57,32 @@ describe ActiveMetadata do
57
57
 
58
58
  end
59
59
 
60
+ describe "#watchers_for" do
61
+
62
+ context "when some record does not relate to a specific model instance" do
63
+
64
+ before do
65
+ @user = User.create!(:email => "email@email.it", :firstname => 'John', :lastname => 'smith' )
66
+ @another_user = User.create!(:email => "email2@email.it", :firstname => 'George', :lastname => 'Washington' )
67
+ @document.create_watcher_for(:name, @user)
68
+ ActiveMetadata::Watcher.create! :document_class => "Document", :label => :name, :owner_id => @another_user.id
69
+ end
70
+
71
+ it "should return all the records that match model/field" do
72
+ docs = @document.watchers_for(:name)
73
+ docs.count.should eq 2
74
+ end
75
+
76
+ it "should group result by owner" do
77
+ @document.create_watcher_for(:name, @another_user)
78
+ ActiveMetadata::Watcher.create! :document_class => "Document", :label => :name, :owner_id => @user.id
79
+ docs = @document.watchers_for(:name)
80
+ docs.count.should eq 2
81
+ end
82
+
83
+ end
84
+
85
+
86
+ end
87
+
60
88
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_metadata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.7.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-05-03 00:00:00.000000000 Z
13
+ date: 2012-05-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -165,7 +165,6 @@ files:
165
165
  - config/cucumber.yml
166
166
  - config/database.yml
167
167
  - config/routes.rb
168
- - db/development.sqlite3
169
168
  - db/migrate/01_create_test_resources.rb
170
169
  - db/migrate/02_active_metadata_migrations.rb
171
170
  - lib/active_metadata/base.rb
@@ -263,7 +262,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
263
262
  version: '0'
264
263
  segments:
265
264
  - 0
266
- hash: 381801808842961274
265
+ hash: -4307170871527026867
267
266
  required_rubygems_version: !ruby/object:Gem::Requirement
268
267
  none: false
269
268
  requirements:
@@ -272,10 +271,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
272
271
  version: '0'
273
272
  segments:
274
273
  - 0
275
- hash: 381801808842961274
274
+ hash: -4307170871527026867
276
275
  requirements: []
277
276
  rubyforge_project: active_metadata
278
- rubygems_version: 1.8.21
277
+ rubygems_version: 1.8.19
279
278
  signing_key:
280
279
  specification_version: 3
281
280
  summary: Add metadata to fields in an active record model
Binary file