Rails数组方法的问题

问题描述 投票:0回答:1

我有一个被废弃的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或重新排列,但保持逻辑不变,但一筹莫展。如果有谁知道如何解决这个问题,我将非常感激。

编辑:这是应用程序的主要可视化关系文档,但我可以解释任何可能没有意义的事情。

enter image description here

arrays ruby-on-rails
1个回答
0
投票

错误是正确的,该 where 方法在Arrays上不可用。它只能用在rails模型上。

列表中的 map 方法返回一个数组,所以我估计你的问题就出在这里......试着去掉下面的 .map 看看是否能解决这个问题。

所以我想这样的东西可能会有用。

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

告诉我们更多关于蛋白质是什么... 更好的是分享它的代码。

© www.soinside.com 2019 - 2024. All rights reserved.