challah 1.1.0 → 1.1.1
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.
- checksums.yaml +4 -4
- data/lib/challah/encrypter.rb +1 -1
- data/lib/challah/engine.rb +1 -3
- data/lib/challah/routes.rb +1 -6
- data/lib/challah/test.rb +1 -1
- data/lib/challah/version.rb +2 -2
- data/test/{controller_test.rb → controllers/controller_test.rb} +2 -2
- data/test/{restrictions_controller_test.rb → controllers/restrictions_controller_test.rb} +2 -4
- data/test/{sessions_controller_test.rb → controllers/sessions_controller_test.rb} +2 -2
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/{app/controllers/challah/test → test/dummy/app/controllers}/restrictions_controller.rb +2 -2
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/models/user.rb +15 -0
- data/test/dummy/app/models/widget.rb +3 -0
- data/test/dummy/app/views/bakery/templates/layouts/sample.erb +1 -0
- data/test/dummy/app/views/bakery/templates/partials/sample.html.haml +1 -0
- data/test/dummy/app/views/bakery/templates/themes/sample.haml +1 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +24 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +30 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +29 -0
- data/test/dummy/config/environments/production.rb +80 -0
- data/test/dummy/config/environments/test.rb +36 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/i18n.rb +1 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +12 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +5 -0
- data/test/dummy/db/migrate/20140114212939_create_widgets.rb +32 -0
- data/test/dummy/db/migrate/20140307205735_create_users.challah_engine.rb +34 -0
- data/test/dummy/db/migrate/20140307205736_create_authorizations.challah_engine.rb +21 -0
- data/test/dummy/db/schema.rb +81 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/test.log +11547 -0
- data/test/dummy/public/404.html +58 -0
- data/test/dummy/public/422.html +58 -0
- data/test/dummy/public/500.html +57 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/{authorization_test.rb → models/authorization_test.rb} +2 -2
- data/test/{user_test.rb → models/user_test.rb} +2 -2
- data/test/{audit_test.rb → services/audit_test.rb} +2 -2
- data/test/{cookie_store_test.rb → services/cookie_store_test.rb} +2 -2
- data/test/{encrypter_test.rb → services/encrypter_test.rb} +27 -27
- data/test/{plugins_test.rb → services/plugins_test.rb} +2 -2
- data/test/{random_test.rb → services/random_test.rb} +9 -9
- data/test/{routes_test.rb → services/routes_test.rb} +2 -2
- data/test/{session_test.rb → services/session_test.rb} +2 -2
- data/test/{signup_test.rb → services/signup_test.rb} +2 -2
- data/test/{simple_cookie_store_test.rb → services/simple_cookie_store_test.rb} +2 -2
- data/test/support/stubs.rb +88 -0
- data/test/test_helper.rb +47 -0
- metadata +75 -29
- data/test/edge_helper.rb +0 -57
- data/test/helper.rb +0 -148
data/test/test_helper.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# Coverage reporting, needs to be loaded first to capture all code coverage stats
|
2
|
+
require 'simplecov'
|
3
|
+
|
4
|
+
# Configure Rails Environment
|
5
|
+
ENV["RAILS_ENV"] ||= "test"
|
6
|
+
|
7
|
+
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
8
|
+
|
9
|
+
# Some other dependencies for testing w/ shoulda and factory girl
|
10
|
+
require 'shoulda'
|
11
|
+
require 'mocha/setup'
|
12
|
+
require 'factory_girl'
|
13
|
+
require 'factories'
|
14
|
+
require 'rails/test_help'
|
15
|
+
|
16
|
+
Rails.backtrace_cleaner.remove_silencers!
|
17
|
+
|
18
|
+
# Load the challah libraries
|
19
|
+
require 'challah'
|
20
|
+
require 'challah/test'
|
21
|
+
|
22
|
+
db_files = Dir["#{ Rails.root.join("db") }/**/*challah*.rb"]
|
23
|
+
|
24
|
+
# Allow repeat tests to run, dropping the db after each suite run
|
25
|
+
# (*not called on CI server)
|
26
|
+
if db_files.size > 0
|
27
|
+
`rake --rakefile #{ File.expand_path("../dummy/Rakefile", __FILE__) } db:test:purge`
|
28
|
+
|
29
|
+
FileUtils.rm_rf(db_files)
|
30
|
+
FileUtils.rm_rf(Rails.root.join("db", "schema.rb"))
|
31
|
+
end
|
32
|
+
|
33
|
+
`rake --rakefile #{ File.expand_path("../dummy/Rakefile", __FILE__) } challah_engine:install:migrations`
|
34
|
+
`rake --rakefile #{ File.expand_path("../dummy/Rakefile", __FILE__) } db:migrate`
|
35
|
+
|
36
|
+
Dir["#{ File.dirname(__FILE__) }/support/**/*.rb"].each { |f| require f }
|
37
|
+
|
38
|
+
class ActiveSupport::TestCase
|
39
|
+
ActiveRecord::Migration.check_pending!
|
40
|
+
|
41
|
+
fixtures :all
|
42
|
+
|
43
|
+
include FactoryGirl::Syntax::Methods
|
44
|
+
|
45
|
+
self.use_transactional_fixtures = true
|
46
|
+
end
|
47
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: challah
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Tornow
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|
@@ -28,44 +28,44 @@ dependencies:
|
|
28
28
|
name: rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '4
|
33
|
+
version: '4'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '4
|
40
|
+
version: '4'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.9
|
47
|
+
version: '0.9'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.9
|
54
|
+
version: '0.9'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bcrypt-ruby
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
61
|
+
version: '3.0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
68
|
+
version: '3.0'
|
69
69
|
description: A simple gem for authorization and session management in Rails.
|
70
70
|
email:
|
71
71
|
- john@johntornow.com
|
@@ -73,7 +73,6 @@ executables: []
|
|
73
73
|
extensions: []
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
|
-
- app/controllers/challah/test/restrictions_controller.rb
|
77
76
|
- app/controllers/sessions_controller.rb
|
78
77
|
- app/models/authorization.rb
|
79
78
|
- app/models/user.rb
|
@@ -82,23 +81,70 @@ files:
|
|
82
81
|
- config/locales/en.yml
|
83
82
|
- db/migrate/20120127150433_create_users.rb
|
84
83
|
- db/migrate/20121116210759_create_authorizations.rb
|
85
|
-
- test/
|
86
|
-
- test/
|
87
|
-
- test/
|
88
|
-
- test/
|
89
|
-
- test/
|
90
|
-
- test/
|
84
|
+
- test/controllers/controller_test.rb
|
85
|
+
- test/controllers/restrictions_controller_test.rb
|
86
|
+
- test/controllers/sessions_controller_test.rb
|
87
|
+
- test/dummy/app/assets/javascripts/application.js
|
88
|
+
- test/dummy/app/assets/stylesheets/application.css
|
89
|
+
- test/dummy/app/controllers/application_controller.rb
|
90
|
+
- test/dummy/app/controllers/restrictions_controller.rb
|
91
|
+
- test/dummy/app/helpers/application_helper.rb
|
92
|
+
- test/dummy/app/models/user.rb
|
93
|
+
- test/dummy/app/models/widget.rb
|
94
|
+
- test/dummy/app/views/bakery/templates/layouts/sample.erb
|
95
|
+
- test/dummy/app/views/bakery/templates/partials/sample.html.haml
|
96
|
+
- test/dummy/app/views/bakery/templates/themes/sample.haml
|
97
|
+
- test/dummy/app/views/layouts/application.html.erb
|
98
|
+
- test/dummy/config/application.rb
|
99
|
+
- test/dummy/config/boot.rb
|
100
|
+
- test/dummy/config/database.yml
|
101
|
+
- test/dummy/config/environment.rb
|
102
|
+
- test/dummy/config/environments/development.rb
|
103
|
+
- test/dummy/config/environments/production.rb
|
104
|
+
- test/dummy/config/environments/test.rb
|
105
|
+
- test/dummy/config/initializers/backtrace_silencers.rb
|
106
|
+
- test/dummy/config/initializers/filter_parameter_logging.rb
|
107
|
+
- test/dummy/config/initializers/i18n.rb
|
108
|
+
- test/dummy/config/initializers/inflections.rb
|
109
|
+
- test/dummy/config/initializers/mime_types.rb
|
110
|
+
- test/dummy/config/initializers/secret_token.rb
|
111
|
+
- test/dummy/config/initializers/session_store.rb
|
112
|
+
- test/dummy/config/initializers/wrap_parameters.rb
|
113
|
+
- test/dummy/config/locales/en.yml
|
114
|
+
- test/dummy/config/routes.rb
|
115
|
+
- test/dummy/config.ru
|
116
|
+
- test/dummy/db/migrate/20140114212939_create_widgets.rb
|
117
|
+
- test/dummy/db/migrate/20140307205735_create_users.challah_engine.rb
|
118
|
+
- test/dummy/db/migrate/20140307205736_create_authorizations.challah_engine.rb
|
119
|
+
- test/dummy/db/schema.rb
|
120
|
+
- test/dummy/db/test.sqlite3
|
121
|
+
- test/dummy/log/test.log
|
122
|
+
- test/dummy/public/404.html
|
123
|
+
- test/dummy/public/422.html
|
124
|
+
- test/dummy/public/500.html
|
125
|
+
- test/dummy/public/favicon.ico
|
126
|
+
- test/dummy/Rakefile
|
127
|
+
- test/dummy/README.rdoc
|
128
|
+
- test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
|
129
|
+
- test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af
|
130
|
+
- test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
|
131
|
+
- test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
|
132
|
+
- test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
|
133
|
+
- test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
|
91
134
|
- test/factories.rb
|
92
|
-
- test/
|
93
|
-
- test/
|
94
|
-
- test/
|
95
|
-
- test/
|
96
|
-
- test/
|
97
|
-
- test/
|
98
|
-
- test/
|
99
|
-
- test/
|
100
|
-
- test/
|
101
|
-
- test/
|
135
|
+
- test/models/authorization_test.rb
|
136
|
+
- test/models/user_test.rb
|
137
|
+
- test/services/audit_test.rb
|
138
|
+
- test/services/cookie_store_test.rb
|
139
|
+
- test/services/encrypter_test.rb
|
140
|
+
- test/services/plugins_test.rb
|
141
|
+
- test/services/random_test.rb
|
142
|
+
- test/services/routes_test.rb
|
143
|
+
- test/services/session_test.rb
|
144
|
+
- test/services/signup_test.rb
|
145
|
+
- test/services/simple_cookie_store_test.rb
|
146
|
+
- test/support/stubs.rb
|
147
|
+
- test/test_helper.rb
|
102
148
|
- lib/challah/audit.rb
|
103
149
|
- lib/challah/authenticators/api_key.rb
|
104
150
|
- lib/challah/authenticators/password.rb
|
data/test/edge_helper.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
class ActiveSupport::TestCase
|
2
|
-
ActiveRecord::Migration.check_pending!
|
3
|
-
|
4
|
-
fixtures :all
|
5
|
-
|
6
|
-
include FactoryGirl::Syntax::Methods
|
7
|
-
|
8
|
-
# Get shoulda-context working in Rails 4
|
9
|
-
include Shoulda::Context::Assertions
|
10
|
-
include Shoulda::Context::InstanceMethods
|
11
|
-
extend Shoulda::Context::ClassMethods
|
12
|
-
|
13
|
-
# Get shoulda-matchers (for AR) working in Rails 4
|
14
|
-
include Shoulda::Matchers::ActiveRecord
|
15
|
-
extend Shoulda::Matchers::ActiveRecord
|
16
|
-
include Shoulda::Matchers::ActiveModel
|
17
|
-
extend Shoulda::Matchers::ActiveModel
|
18
|
-
|
19
|
-
# Override shoulda-context
|
20
|
-
#
|
21
|
-
# Should be fixed by time Rails 4 actually comes out
|
22
|
-
def assert_accepts(matcher, target, options = {})
|
23
|
-
if matcher.respond_to?(:in_context)
|
24
|
-
matcher.in_context(self)
|
25
|
-
end
|
26
|
-
|
27
|
-
if matcher.matches?(target)
|
28
|
-
assert true
|
29
|
-
if options[:message]
|
30
|
-
assert_match options[:message], matcher.negative_failure_message
|
31
|
-
end
|
32
|
-
else
|
33
|
-
assert false, matcher.failure_message
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
# Override shoulda-context
|
38
|
-
#
|
39
|
-
# Should be fixed by time Rails 4 actually comes out
|
40
|
-
def assert_rejects(matcher, target, options = {})
|
41
|
-
if matcher.respond_to?(:in_context)
|
42
|
-
matcher.in_context(self)
|
43
|
-
end
|
44
|
-
|
45
|
-
not_match = matcher.respond_to?(:does_not_match?) ? matcher.does_not_match?(target) : !matcher.matches?(target)
|
46
|
-
|
47
|
-
if not_match
|
48
|
-
assert true
|
49
|
-
|
50
|
-
if options[:message]
|
51
|
-
assert_match options[:message], matcher.failure_message
|
52
|
-
end
|
53
|
-
else
|
54
|
-
assert false, matcher.failure_message
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
data/test/helper.rb
DELETED
@@ -1,148 +0,0 @@
|
|
1
|
-
# Coverage reporting, needs to be loaded first to capture all code coverage stats
|
2
|
-
require 'simplecov'
|
3
|
-
|
4
|
-
# Setup a sample rails app for testing rails modules
|
5
|
-
sample_root = File.expand_path(File.join(File.dirname(__FILE__), '..', 'tmp', 'sampleapp'))
|
6
|
-
FileUtils.rm_rf(sample_root) if File.exists?(sample_root)
|
7
|
-
`./bin/rails new #{sample_root} --skip-bundle --skip-sprockets`
|
8
|
-
|
9
|
-
# Setup environment variables for the Rails instance
|
10
|
-
ENV['RAILS_ENV'] = 'test'
|
11
|
-
ENV['BUNDLE_GEMFILE'] ||= File.join(sample_root, 'Gemfile')
|
12
|
-
|
13
|
-
# Load the newly created rails instance environment
|
14
|
-
require "#{sample_root}/config/environment"
|
15
|
-
|
16
|
-
# Some other dependencies for testing w/ shoulda and factory girl
|
17
|
-
require 'shoulda'
|
18
|
-
require 'mocha/setup'
|
19
|
-
require 'factory_girl'
|
20
|
-
require 'factories'
|
21
|
-
require 'rails/test_help'
|
22
|
-
|
23
|
-
# Load the challah libraries
|
24
|
-
require 'challah'
|
25
|
-
require 'challah/test'
|
26
|
-
|
27
|
-
# Setup the challah app, including running migrations within the rails app
|
28
|
-
# TODO - this causes some annoying output in 1.9.3, still works, but would like to suppress
|
29
|
-
`rake --rakefile #{File.join(sample_root, 'Rakefile')} challah:setup:migrations`
|
30
|
-
|
31
|
-
# Run migrations for the sample app, hiding output
|
32
|
-
ActiveRecord::Migration.verbose = false
|
33
|
-
ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate")
|
34
|
-
|
35
|
-
# Use ActiveSupport::TestCase for any tests using factories and database saving,
|
36
|
-
# so we can have a transactional rollback after each test.
|
37
|
-
class ActiveSupport::TestCase
|
38
|
-
include FactoryGirl::Syntax::Methods
|
39
|
-
|
40
|
-
self.use_transactional_fixtures = true
|
41
|
-
end
|
42
|
-
|
43
|
-
if Rails::VERSION::MAJOR >= 4
|
44
|
-
require 'edge_helper'
|
45
|
-
end
|
46
|
-
|
47
|
-
class MockController
|
48
|
-
include Challah::Controller
|
49
|
-
|
50
|
-
attr_accessor :request, :session, :params
|
51
|
-
|
52
|
-
def initialize()
|
53
|
-
@request = MockRequest.new
|
54
|
-
@session ||= {}
|
55
|
-
@params ||= {}
|
56
|
-
end
|
57
|
-
|
58
|
-
def redirect_to(*args)
|
59
|
-
# do nothing
|
60
|
-
end
|
61
|
-
|
62
|
-
def login_path
|
63
|
-
"/login"
|
64
|
-
end
|
65
|
-
|
66
|
-
def logout_path
|
67
|
-
"/logout"
|
68
|
-
end
|
69
|
-
|
70
|
-
def signin_path
|
71
|
-
"/sign-in"
|
72
|
-
end
|
73
|
-
|
74
|
-
def signout_path
|
75
|
-
"/sign-out"
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
class MockRequest
|
80
|
-
attr_accessor :cookie_jar, :session_options, :url
|
81
|
-
|
82
|
-
class MockCookieJar < Hash
|
83
|
-
def delete(key, options = {})
|
84
|
-
super(key)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
def initialize
|
89
|
-
@cookie_jar = MockCookieJar.new
|
90
|
-
@session_options = { :domain => 'test.dev' }
|
91
|
-
@url = "http://example.com/"
|
92
|
-
end
|
93
|
-
|
94
|
-
def cookies
|
95
|
-
@cookie_jar
|
96
|
-
end
|
97
|
-
|
98
|
-
def cookies=(value)
|
99
|
-
@cookie_jar = value
|
100
|
-
end
|
101
|
-
|
102
|
-
def remote_ip
|
103
|
-
"8.8.8.8"
|
104
|
-
end
|
105
|
-
|
106
|
-
def user_agent
|
107
|
-
"Some Cool Browser"
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
class FakeProvider
|
112
|
-
def self.save(record)
|
113
|
-
set(record.fake_provider.merge(user_id: record.id))
|
114
|
-
end
|
115
|
-
|
116
|
-
def self.set(options = {})
|
117
|
-
user_id = options.fetch(:user_id)
|
118
|
-
uid = options.fetch(:uid, '')
|
119
|
-
token = options.fetch(:token, '')
|
120
|
-
|
121
|
-
Authorization.set({
|
122
|
-
provider: :fake,
|
123
|
-
user_id: user_id,
|
124
|
-
uid: uid,
|
125
|
-
token: token
|
126
|
-
})
|
127
|
-
end
|
128
|
-
|
129
|
-
def self.valid?(record)
|
130
|
-
record.fake_provider? and record.fake_provider.fetch(:token) == 'me'
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
Challah.register_provider :fake, FakeProvider
|
135
|
-
|
136
|
-
# Monkey patch fix for shoulda and Rails 3.1+.
|
137
|
-
module Shoulda
|
138
|
-
module ActiveRecord
|
139
|
-
module Matchers
|
140
|
-
class AssociationMatcher
|
141
|
-
protected
|
142
|
-
def foreign_key
|
143
|
-
reflection.foreign_key
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|