NoMethodError: неопределенный метод `liquidity_manager? 'за # - PullRequest
0 голосов
/ 05 декабря 2018

Мое решение выдает NoMethodError.Вот что я сделал ниже:

Order.rb

class Order < ActiveRecord::Base
  belongs_to :member
end

Member.rb

class Order < ActiveRecord::Base
  has_many :orders

  def liquidity_manager?
    @is_liquidity_manager ||= self.class.liquidity_managers.include?(self.email)
  end

  def liquidity_managers
    ENV['LM_ACCOUNTS'].split(',')
  end
end

логика rake task

логика в lib / update_order_tags.rake

num_counts = (Order.count/10).ceil
num_counts.times do |i|
  Order.all.offset(i*10).limit(10).find_each do |g|
    if g.tags.blank? # am saving on only the blank fields
      if g.liquidity_manager? # The error is here
        g.tags = 'LM'
        g.save!
      else
        g.tags = 'Customer'
        g.save!
      end
    end
  end
end

Как мне обратиться к методу liquidity_manager?, чтобы он был полезендля меня в lib?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Итак, из совета, данного мне @sawa в разделе ответов, вот что я сделал, чтобы заставить его работать.

num_counts = (Order.count/10).ceil
num_counts.times do |i|
  Order.all.offset(i*10).limit(10).find_each do |g|
    if g.tags.blank? 
      if g.member.liquidity_manager? # So this easily gets to Member.rb to reference liquidity_manager? method.
        g.tags = 'LM'
        g.save!
      else
        g.tags = 'Customer'
        g.save!
      end
    end
  end
end
0 голосов
/ 05 декабря 2018

Вы определили Order#liquidity_manager? в Member.rb, который не загружается автоматически Rails.Вы должны либо явно загрузить файл Member.rb, либо переименовать этот файл в /app/models/order.rb.

...