使用方法返回值在rails上的ruby中搜索

时间:2015-11-02 23:26:37

标签: ruby-on-rails ruby

我正在尝试对一组对象进行排序,其中s类有一个名为some_method的实例方法,该方法在Model of S中定义,返回值v。

def some_method(id)
  ...
  return something # a float number
end 

类S与具有many_to_many关系的类C相关。 (C类has_many s和S类has_many c)。我通过调用C.find(c_id).s

来获取这组s对象

我正在尝试这样的事情

C.find(c_id).s.sort{|a,b| a.some_method(id) <=> b.some_method(id)}

但我无法对数组进行排序。我该怎么做?

1 个答案:

答案 0 :(得分:0)

您正在使用PAPER=Thesis CODES=$(wildcard ../figures/gnuplot_codes/*.gp) # list of all gnuplot scripts EPSES=$(wildcard ../figures/figs/*.eps) # list of all eps files FIGTEX=$(wildcard ../figures/figs/*.tex) # list of all associated tex files all: $(EPSES) $(FIGTEX) $(CODES) $(PAPER).pdf evince $(PAPER).pdf # This is the line I can't figure out --- # if any of the gnuplot codes are updated it runs all of them $(EPSES) $(FIGTEX): $(CODES) gnuplot $(CODES) # compiles the latex document using latexmk $(PAPER).pdf: $(PAPER).tex $(EPSES) $(FIGTEX) $(CODES) latexmk -latex="latex -interaction=nonstopmode" -use-make $< dvips $(PAPER).dvi -Ppdf ps2pdf $(PAPER).ps # This catches any missing *.eps files thrown back from latexmk # I feel like I should have a way of checking before # running $(PAPER).pdf rule ../figures/figs/%.eps: ../figures/gnuplot_codes/%.gp gnuplot $< # same as the rule above but for *.tex ../figures/figs/%.tex: ../figures/gnuplot_codes/%.gp gnuplot $< # this cleans all the latex files clean: latexmk -CA 运算符,但似乎正在返回浮点数。这不是运营商需要有效排序的。 (Read more about that operator here

我建议您使用sort_by

<=>

这将对方法C.find(c_id).s.sort_by{ |element| element.some_method(id) } 上的数组s进行排序,假设您传入了some_method。根据id的不同,您可能需要在这个区块之外定义它。