我有表格字段:
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”
我该如何编写查询?
答案 0 :(得分:2)
Field.order(:id_participant, :id_survey, :name).where("name LIKE 'p1_c1_exams%'").last
这个或类似的东西(我必须承认不是100%理解你想做什么)应该做的。
如果你不能这样做,也许你应该考虑改变你的数据库,只有名字的名字字段,并在不同的字段中移动这些数字和p1_c1_东西。