Mysql rails运行函数内部查询
如果我有以下查询,是否可以在内部运行函数?假设我想在哪里添加zip\u代码=用户距离zip\u代码 我想从每一行获取数据,并在实际选择它之前通过函数运行它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更快,那么您可以执行以下操作
@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真的很陌生。