0

私はテーブルフィールドを持っています:

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"

「....exams」という名前の大きい番号のインスタンスを見つけたいです。

で試してみました

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

ただし、「p1_c1_exams2」ではなく、データベース「p1_c1_exams1」で最初のインスタンスが検出されます。

私はそれから試しました:

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

ただし、データベース「p1_c1_examination2」ではなく、「p1_c1_exams2」の最後のインスタンスが検出されます。

どうすればクエリを書くことができますか?

4

1 に答える 1

2

そこで何をしているの?Rails ActiveRecordを使ってみませんか?

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

これまたは同様のもの(私はあなたが何をしたいのかを100%理解していないことを認めなければなりません)がトリックを行うべきです。

この方法でそれを行うことができない場合は、データベースを変更し、名前のみの名前フィールドを作成し、それらの番号とp1_c1_のものを別のフィールドに移動することを検討する必要があります。

于 2012-10-24T11:49:06.210 に答える