Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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
Mysql rails运行函数内部查询_Mysql_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Mysql rails运行函数内部查询

Mysql rails运行函数内部查询,mysql,ruby-on-rails,ruby,ruby-on-rails-3,Mysql,Ruby On Rails,Ruby,Ruby On Rails 3,如果我有以下查询,是否可以在内部运行函数?假设我想在哪里添加zip\u代码=用户距离zip\u代码 我想从每一行获取数据,并在实际选择它之前通过函数运行它 @posts = Listing.find_by_sql(["SELECT * FROM listings WHERE industry = ? && ", current_user.industry]) 如果您主要是希望实现这一点,而不太担心性能,因为直接使用SQL比使用ActiveRecord更快,那么您可以执行以下操作

如果我有以下查询,是否可以在内部运行函数?假设我想在哪里添加zip\u代码=用户距离zip\u代码

我想从每一行获取数据,并在实际选择它之前通过函数运行它

@posts = Listing.find_by_sql(["SELECT * FROM listings WHERE industry = ? && ", current_user.industry])

如果您主要是希望实现这一点,而不太担心性能,因为直接使用SQL比使用ActiveRecord更快,那么您可以执行以下操作:

listings = []
Listing.all.each do |listing|
    listings << listing if user_distance(listing.zip_code)
end
因此,如果user_distance方法返回true或以何种方式设置,它将遍历每个列表并将其添加到该数组中


您可以做的另一件事是在数据库上设置一个存储过程stored proc,它接收邮政编码并返回您想要的内容,即,执行与user_distance相同的操作,并且用户定义的变量max_distance可以位于数据库表中,以便存储过程可以访问它。然后,您可以从SQL调用存储的过程,仍然能够传入每行的邮政编码。

您想在选择它之前通过ruby函数运行它吗?是的-我试图做的是从列表中提取一个邮政编码,并计算该邮政编码和用户设置的邮政编码之间的距离。我有一个函数用于此操作,如果它是小于用户设置的“最大距离”,然后选择列表行。在SQL之外可能有更好的方法来实现这一点,我不确定,我对rails真的很陌生。