使用函数find和last的困难

时间:2012-10-24 11:39:21

标签: ruby-on-rails ruby find

我有表格字段:

t.string   "name"
t.integer  "id_survey"
t.integer  "id_participant"

我在db中有以下实例:

Field1= ["id_participant" => 1, "id_survey" => 1, "name" => "p1_c1_exams1"]
Field2= ["id_participant" => 1, "id_survey" => 1, "name" => "p1_c1_exams2"]
Field3= ["id_participant" => 1, "id_survey" => 1, "name" => "p1_c1_examination1"]
Field4= ["id_participant" => 1, "id_survey" => 1, "name" => "p1_c1_examination2"]

我有一个变量:

nameStep = "p1_c1_exams"

我想找到名为“....考试”的实例和更大的数字。

我试过

lastField = Field.find{|f| f['id_participant']==1 and f['id_survey']==1 and f['name'].include? nameStep}['name']

但它找到db“p1_c1_exams1”中的第一个实例而不是“p1_c1_exams2”

然后我尝试了:

lastField = Field.last{|f| f['id_participant']==1 and f['id_survey']==1 and f['name'].include? nameStep}['name']

但它找到db“p1_c1_examination2”中的最后一个实例而不是“p1_c1_exams2”

我该如何编写查询?

1 个答案:

答案 0 :(得分:2)

你在那做什么?你为什么不使用Rails ActiveRecord?

Field.order(:id_participant, :id_survey, :name).where("name LIKE 'p1_c1_exams%'").last

这个或类似的东西(我必须承认不是100%理解你想做什么)应该做的。

如果你不能这样做,也许你应该考虑改变你的数据库,只有名字的名字字段,并在不同的字段中移动这些数字和p1_c1_东西。