私には「has_many:through」という2つのモデルがあります。それはうまくいっていますが、それぞれの組み合わせに対して一意の順序付けを追加する必要があります。 のは、我々はモデル電車や馬車(鉄道運送)を持っており、各列車は客車例えばRails 4+ has_many:ユニークな順序付けを使用したアソシエイティブ
# /models/train.rb
class Train < ActiveRecord::Base
has_many :carriages, through: :combinations
end
# /models/carriage.rb
class Carriage < ActiveRecord::Base
has_many :trains, through: :combinations
end
# /models/combination.rb
class Combination < ActiveRecord::Base
belongs_to :train
belongs_to :carriage
end
# /controllers/trains_controller.rb
class TrainsController < ApplicationController
def shortcut_params
params.require(:train).permit(:name, :description, carriage_ids: [])
end
end
# /views/trains/_form.html.erb
<div class="field">
<%= f.label :carriage_ids, 'Choose Carriages' %><br>
<%= f.select :carriage_ids, Carriage.all.collect { |x| [x.name, x.id] }, {}, multiple: true, size: 6 %>
</div>
のユニークな組み合わせを持っているとしましょう:この例では
train_1 = carriage_5, carriage_4, carriage_1, carriage_3, carriage_2, carriage_6
train_2 = carriage_6, carriage_5, carriage_3, carriage_1, carriage_2, carriage_4
train_3 = carriage_1, carriage_2, carriage_3, carriage_4, carriage_6, carriage_5
が持っているcarriage_5:
- 列車1の最初の場所、
- tの2番目の場所rain_2、
- train_3の最後の場所。
これは、https://stackoverflow.com/a/19138677/4801165のようなソリューションを使用できないことを意味します。これは、パラメータを注文するためのパラメータがないためです。
データベースでは、1から5まで(最低のIDから最も高いIDまで)保存していることがわかります。したがって、IDを1つずつ追加するソリューションがあるかもしれませんか?
各列車の正しい発注を得るための簡単な解決策があることを願っています。 おかげ
あなたはカスタムポジションテーブルを持っていて、それによって結合して注文することができます。カスタム注文をする可能性もありますが、それ以上のモデルを追加すると面倒です。ここには、そのトピックについての[要点](https://gist.github.com/cpjolicoeur/3590737)があります –