friendly_id 3.1.7 → 3.1.8

Sign up to get free protection for your applications and to get access to all the features.
data/Changelog.md CHANGED
@@ -6,6 +6,10 @@ suggestions, ideas and improvements to FriendlyId.
6
6
  * Table of Contents
7
7
  {:toc}
8
8
 
9
+ ## 3.1.8 (2010-11-22)
10
+
11
+ * Fix compatibility with Active Record 3.0.3.
12
+
9
13
  ## 3.1.7 (2010-09-22)
10
14
 
11
15
  * Reserved words can now be regular expressions.
data/Guide.md CHANGED
@@ -447,7 +447,6 @@ the slug "joes-diner" if it's located in a different city:
447
447
 
448
448
  Restaurant.find("joes-diner", :scope => "seattle") # returns 1 record
449
449
  Restaurant.find("joes-diner", :scope => "chicago") # returns 1 record
450
- Restaurant.find(:all, "joes-diner") # returns both records
451
450
 
452
451
  The value for the `:scope` key in your model can be a custom method you
453
452
  define, or the name of a relation. If it's the name of a relation, then the
@@ -455,6 +454,14 @@ scope's text value will be the result of calling `to_param` on the related
455
454
  model record. In the example above, the city model also uses FriendlyId and so
456
455
  its `to_param` method returns its friendly_id: "chicago" or "seattle".
457
456
 
457
+ If you want to find all records with a partular friendly\_id regardless of scope,
458
+ this is a slightly more complicated, but doable:
459
+
460
+ name, sequence = params[:id].parse_friendly_id
461
+ Restaurant.find(:all, :joins => :slugs, :conditions => {
462
+ :slugs => {:name => name, :sequence => sequence}
463
+ })
464
+
458
465
  ### Updating a Relation's Scoped Slugs
459
466
 
460
467
  When using a relation as the scope, updating the relation will update the
data/Rakefile CHANGED
@@ -1,5 +1,4 @@
1
1
  require "rubygems"
2
- require "bundler/setup"
3
2
  require "rake"
4
3
  require "rake/testtask"
5
4
  require "rake/gempackagetask"
@@ -84,7 +84,7 @@ module FriendlyId
84
84
  return find_some_using_slug(friendly_ids, unfriendly_ids) if use_slugs_table
85
85
  column = fc.cache_column || fc.column
86
86
  friendly = arel_table[column].in(friendly_ids)
87
- unfriendly = arel_table[relation.primary_key].in unfriendly_ids
87
+ unfriendly = arel_table[relation.primary_key.name].in unfriendly_ids
88
88
  if friendly_ids.present? && unfriendly_ids.present?
89
89
  where(friendly.or(unfriendly))
90
90
  else
@@ -94,7 +94,7 @@ module FriendlyId
94
94
 
95
95
  def find_some_using_slug(friendly_ids, unfriendly_ids)
96
96
  ids = [unfriendly_ids + sluggable_ids_for(friendly_ids)].flatten.uniq
97
- where(arel_table[relation.primary_key].in(ids))
97
+ where(arel_table[relation.primary_key.name].in(ids))
98
98
  end
99
99
 
100
100
  def sluggable_ids_for(ids)
@@ -166,7 +166,12 @@ module FriendlyId
166
166
 
167
167
  def find_some(ids)
168
168
  return super unless klass.uses_friendly_id?
169
- Find.new(self, ids).find_some or super
169
+ Find.new(self, ids).find_some or begin
170
+ # A change in Arel 2.0.x causes find_some to fail with arrays of instances; not sure why.
171
+ # This is an emergency, temporary fix.
172
+ ids = ids.map {|id| (id.respond_to?(:friendly_id_config) ? id.id : id).to_i}
173
+ super
174
+ end
170
175
  rescue ActiveRecord::RecordNotFound => error
171
176
  find ? find.raise_error(error) : raise(error)
172
177
  end
@@ -2,7 +2,7 @@ module FriendlyId
2
2
  module Version
3
3
  MAJOR = 3
4
4
  MINOR = 1
5
- TINY = 7
5
+ TINY = 8
6
6
  BUILD = nil
7
7
  STRING = [MAJOR, MINOR, TINY, BUILD].compact.join('.')
8
8
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 3
7
7
  - 1
8
- - 7
9
- version: 3.1.7
8
+ - 8
9
+ version: 3.1.8
10
10
  platform: ruby
11
11
  authors:
12
12
  - Norman Clarke
@@ -16,11 +16,12 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-09-22 00:00:00 -03:00
19
+ date: 2010-11-22 00:00:00 -03:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: babosa
24
+ prerelease: false
24
25
  requirement: &id001 !ruby/object:Gem::Requirement
25
26
  none: false
26
27
  requirements:
@@ -32,9 +33,50 @@ dependencies:
32
33
  - 0
33
34
  version: 0.2.0
34
35
  type: :runtime
35
- prerelease: false
36
36
  version_requirements: *id001
37
- description: " FriendlyId is the \"Swiss Army bulldozer\" of slugging and permalink plugins\n for Ruby on Rails. It allows you to create pretty URL\xE2\x80\x99s and work with\n human-friendly strings as if they were numeric ids for ActiveRecord models.\n"
37
+ - !ruby/object:Gem::Dependency
38
+ name: activerecord
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ segments:
46
+ - 3
47
+ - 0
48
+ - 0
49
+ version: 3.0.0
50
+ type: :development
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: mocha
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ segments:
61
+ - 0
62
+ - 9
63
+ version: "0.9"
64
+ type: :development
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ name: sqlite3-ruby
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ segments:
75
+ - 1
76
+ version: "1"
77
+ type: :development
78
+ version_requirements: *id004
79
+ description: " FriendlyId is the \"Swiss Army bulldozer\" of slugging and permalink plugins\n for Ruby on Rails. It allows you to create pretty URL's and work with\n human-friendly strings as if they were numeric ids for ActiveRecord models.\n"
38
80
  email:
39
81
  - norman@njclarke.com
40
82
  - adrian@mugnolo.com
@@ -117,7 +159,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
159
  requirements:
118
160
  - - ">="
119
161
  - !ruby/object:Gem::Version
120
- hash: -1691512069096853799
121
162
  segments:
122
163
  - 0
123
164
  version: "0"
@@ -126,7 +167,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
167
  requirements:
127
168
  - - ">="
128
169
  - !ruby/object:Gem::Version
129
- hash: -1691512069096853799
130
170
  segments:
131
171
  - 0
132
172
  version: "0"