Использование помощника image_url в модели - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь использовать помощник image_url в моей модели. У меня также есть свойство image_url на модели (не может быть изменено). Когда я вызываю image_url, вспомогательный метод, кажется, вызывает метод на модели. Я получаю ошибку wrong number of arguments (given 1, expected 0)

 def public_image
    if self.avatar && photo_public?
      self.avatar.remote_url
    else
      image_url '/client/src/assets/images/icons/anon-small.svg'
    end
  end

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Я согласен с arieljuod, что это проблема зрения.Однако, если это действительно необходимо для грязной реализации, можно сделать Object.new.extend(ActionView::Helpers::AssetUrlHelper).image_url('foo')

0 голосов
/ 05 сентября 2018

Да, это очень правильно, вы не можете назвать эту область! Это не метод для модели. Это вспомогательный метод ActionView. https://apidock.com/rails/ActionView/Helpers/AssetUrlHelper/image_url

Для того, что я вижу, это не подходящее место для такой логики. Попробуйте поместить это в decorator, чтобы абстрагировать эту не-бизнес-логику.

0 голосов
/ 05 сентября 2018

image_url является помощником вида, его не следует использовать внутри модели, вы должны переместить эту логику в помощник для вида

#application_helper.rb
def public_image(user)
  if user.avatar && user.photo_public?
    user.avatar.remote_url
  else
    image_url '/client/src/assets/images/icons/anon-small.svg'
  end
end

По вашему мнению измените user.public_image на public_image(user)

...