Skip to content

Commit 64577ab

Browse files
committed
Initialize class_name for a relationship from the model by default.
1 parent 6249695 commit 64577ab

2 files changed

Lines changed: 25 additions & 3 deletions

File tree

lib/jsonapi/resource.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,13 @@ def _add_relationship(klass, *attrs)
673673

674674
attrs.each do |attr|
675675
check_reserved_relationship_name(attr)
676+
677+
# Initialize from the model's properties.
678+
model_association = _model_class.reflect_on_association(attr)
679+
if model_association
680+
options[:class_name] ||= model_association.class_name
681+
end
682+
676683
@_relationships[attr] = relationship = klass.new(attr, options)
677684

678685
associated_records_method_name = case relationship

test/fixtures/active_record.rb

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,21 @@ class Tag < ActiveRecord::Base
254254
class Section < ActiveRecord::Base
255255
end
256256

257+
class HairCut < ActiveRecord::Base
258+
end
259+
260+
class Property < ActiveRecord::Base
261+
end
262+
263+
class Customer < ActiveRecord::Base
264+
end
265+
266+
class BadlyNamedAttributes < ActiveRecord::Base
267+
end
268+
269+
class Cat < ActiveRecord::Base
270+
end
271+
257272
class IsoCurrency < ActiveRecord::Base
258273
self.primary_key = :code
259274
# has_many :expense_entries, foreign_key: 'currency_code'
@@ -896,8 +911,8 @@ def self.verify_key(key, context = nil)
896911
class PreferencesResource < JSONAPI::Resource
897912
attribute :advanced_mode
898913

899-
has_one :author, foreign_key: :person_id, class_name: 'Person'
900-
has_many :friends, class_name: 'Person'
914+
has_one :author, foreign_key: :person_id
915+
has_many :friends
901916

902917
def self.find_by_key(key, options = {})
903918
new(Preferences.first)
@@ -961,7 +976,7 @@ class PostResource < JSONAPI::Resource
961976
attribute :body
962977
attribute :subject
963978

964-
has_one :writer, foreign_key: 'author_id'
979+
has_one :writer, foreign_key: 'author_id', class_name: 'Writer'
965980
has_one :section
966981
has_many :comments, acts_as_set: false
967982

0 commit comments

Comments
 (0)