Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在RubyonRails中找到相关记录?_Ruby On Rails_Ruby_Ruby On Rails 3_Activerecord_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 如何在RubyonRails中找到相关记录?

Ruby on rails 如何在RubyonRails中找到相关记录?,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,Ruby On Rails 3.2,我有这门课: class Invoice < ActiveRecord::Base has_many :payments def payable? amount_payable != 0 end end 问题似乎是where子句只接受数据库列名,而不接受像payment?这样的函数 有人能告诉我怎么做吗 谢谢您的帮助。您不能在SQL中运行Ruby方法。因为这个逻辑很简单,所以你可以 where("amount_payable != ?", 0) 如果您的Rub

我有这门课:

class Invoice < ActiveRecord::Base

  has_many :payments

  def payable?
    amount_payable != 0
  end

end
问题似乎是
where
子句只接受数据库列名,而不接受像
payment?
这样的函数

有人能告诉我怎么做吗


谢谢您的帮助。

您不能在SQL中运行Ruby方法。因为这个逻辑很简单,所以你可以

where("amount_payable != ?", 0)
如果您的Ruby方法不能用纯SQL表示,那么唯一的方法就是获取所有记录,然后用Ruby过滤它们(这样效率很低),如下所示:

all.select(&:payable?)
all.select(&:payable?)