0

arr の値で @plrdet を配置しようとしています。

この方法を選択するとき:

@plrdet = Player.find_all_by_fid(arr)

テーブルの行の順番で返すので、arrの順番で並べて欲しいです。

例: Player には次の属性が含まれます: addressage、 uniqnum 。

と:

arr

uniqnum の配列です。

arr=[ 456 , 123 ,789]

player=[{NYC,32,123},{BSAS,27,456},{LND,30,789})

私が探している結果は、「find_all」プレーヤーからのものでなければなりません= [、{BSAS、27、456 }、{NYC、32、123 }、{LND、30,789})

4

2 に答える 2

1

問題を理解していれば、次のようなことを試してみます。

ハッシュバージョン

players = [{}]
@plrdet.each do |player|
    players << {"adress" => player.adress, "age" => player.age, "fid" => player.fid}
end
players.inspect

結果は [{"adress" => BSAS, "age" => 27, "fid" => 456},{"adress" => NYC, "age" => 32,"fid" => 123} になります。 ,{"住所" => LND、"年齢" => 30、"FID" => 789}]

アレイのバージョン

players = [[]]
@plrdet.each do |player|
    players << [player.adress, player.age, player.fid]
end

結果は [[BSAS,27,456],[NYC,32,123],[LND,30,789]] になります。

選別

この解決策はうまくいくはずですが、気に入らないので、問題を解決するためのより良い方法があるかもしれません:

sorted_players = [[]] 
arr.each do |arr_fid| 
    sorted_players << players.collect{|player| player if player.include?(arr_fid)} 
end 
于 2013-01-15T12:11:52.857 に答える
0

次の 2 つのオプションがあります。

  1. orderを使用して、クエリで結果を並べ替えます
  2. sortを使用してメモリ内の結果をソートします

1 を使用できます。次のようになります。

@plrdet = Player.find_all_by_fid(arr).order("address")

于 2013-01-15T11:53:02.297 に答える