Проблемы с методами массива Rails - PullRequest
0 голосов
/ 04 мая 2020

У меня есть блок устаревшего кода Ruby on Rails, который является началом файла rake и не зависит ни от чего, кроме доступа к классу Protein, который он может (унаследован от более ранней версии проекта)

task :import_merops_cleavages do
  require "#{Rails.root}/config/environment"
  require 'bio'  
  require 'merops'
  require_relative '../../app/models/protein.rb'


  proteases = Protein.includes(:drs).map(&:drs).where(db_name: 'MEROPS').uniq
  @total = proteases.count  
  puts "starting import of #{@total} proteases"
  @added = 1 
  @padded =1 

Каждый раз, когда я пытаюсь выполнить эту конкретную задачу, грабли прерываются, и я получаю то же сообщение об ошибке

NoMethodError: undefined method where for #<Array:0x00007f88a625d290> Did you mean? when

Я пытался использовать другие методы чтобы избавиться от where или переставить вещи, но сохранить logi c таким же, но я в растерянности. Если у кого-то есть идея, как решить эту проблему, я был бы очень благодарен

Изменить: это основная визуальная реляционная документация для приложения, но я могу объяснить все, что может не иметь смысла.

enter image description here

1 Ответ

0 голосов
/ 05 мая 2020

Ошибка правильная, метод where недоступен для массивов. Его можно использовать только на рельсовых моделях.

Метод map возвращает массив, поэтому я считаю, что у вас проблема ... попробуйте удалить .map и посмотрите, решит ли это эту проблему.

Думаю, что-то вроде этого может сработать:

proteases = Protein.all.where(db_name: 'MEROPS').uniq

Расскажите нам больше о том, что такое Protein ... лучше еще поделитесь кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...