Ассоциация has_one и has_many выдает [неверное количество аргументов (задано 1, ожидается 0)] при передаче с помощью ярлыка proc - PullRequest
0 голосов
/ 08 марта 2019

У меня были rails 4.2 и ruby ​​2.3.5, и я обновляю его до rails 5.2 с ruby ​​2.6.1.

В более старой версии rails (4.2) мой UserAuthenticatedSerializer работает нормально и дает правильный ответ.

После обновления до rails 5.2 мой Serializer начал выдавать ошибку аргумента.

Я отладил его, и он выбрасывает из файла метода имя-файла.

Если я удаляю второй параметр из параметров, он работает нормально. Передача этих двух аргументов приводит к ошибке.

Эта же ассоциация работает с рельсами 4.2, но не работает в рельсах 5.2.

Вот мой снимок кода:

response = UserAuthenticatedSerializer.new(@user, { params: { domain: current_domain } }).to_json
error = ArgumentError (wrong number of arguments (given 1, expected 0))

user_authenticated_serializer.rb ===>
class UserAuthenticatedSerializer
include FastJsonapi::ObjectSerializer
has_one :user_profile, serializer: UserProfileSerializer, &:user_profile
has_many :user_topic_label_order, &:user_topic_label_order
end

user.rb ====>
Relationship in user model:
has_one :user_profile, dependent: :destroy
has_many :user_topic_label_order, dependent: :destroy

Версия Rails: 5.2.2 Ruby версия: ruby ​​2.6.1 fast_jsonapi gem версия: fast_jsonapi (1.5) active_model_serializers (~> 0.10.9)

1 Ответ

0 голосов
/ 13 июня 2019

Ошибка исходит от вашего сериализатора, а именно от передачи дополнительного аргумента has_one.Попробуйте вместо этого:

class UserAuthenticatedSerializer
  include FastJsonapi::ObjectSerializer
  attributes :name, :address

  has_one :user_profile #, &:user_profile
end

Вам не нужно вводить ничего лишнего.

...