File tree Expand file tree Collapse file tree 3 files changed +11
-1
lines changed Expand file tree Collapse file tree 3 files changed +11
-1
lines changed Original file line number Diff line number Diff line change @@ -40,7 +40,7 @@ module RelationMethods
40
40
# +nil+ if the token is invalid or the record was not found.
41
41
def find_by_token_for ( purpose , token )
42
42
raise UnknownPrimaryKey . new ( self ) unless model . primary_key
43
- model . token_definitions . fetch ( purpose ) . resolve_token ( token ) { |id | find_by ( model . primary_key => id ) }
43
+ model . token_definitions . fetch ( purpose ) . resolve_token ( token ) { |id | find_by ( model . primary_key => [ id ] ) }
44
44
end
45
45
46
46
# Finds a record using a given +token+ for a predefined +purpose+. Raises
Original file line number Diff line number Diff line change 3
3
require "cases/helper"
4
4
require "models/matey"
5
5
require "models/user"
6
+ require "models/cpk"
6
7
require "active_support/message_verifier"
7
8
8
9
class TokenForTest < ActiveRecord ::TestCase
@@ -144,6 +145,13 @@ class User < ::User
144
145
assert_nil custom_pk . find_by_token_for ( :lookup , @lookup_token )
145
146
end
146
147
148
+ test "finds record with a composite primary key" do
149
+ book = Cpk ::Book . create! ( id : [ 1 , 3 ] , shop_id : 2 )
150
+ token = book . generate_token_for ( :test )
151
+
152
+ assert_equal book , Cpk ::Book . find_by_token_for ( :test , token )
153
+ end
154
+
147
155
test "raises when no primary key has been declared" do
148
156
no_pk = Class . new ( Matey ) do
149
157
generates_token_for :parley
Original file line number Diff line number Diff line change @@ -13,6 +13,8 @@ class Book < ActiveRecord::Base
13
13
14
14
before_destroy :prevent_destroy_if_set
15
15
16
+ generates_token_for :test
17
+
16
18
private
17
19
def prevent_destroy_if_set
18
20
throw ( :abort ) if fail_destroy
You can’t perform that action at this time.
0 commit comments