Ruby on rails 轨道4+;有很多:通过与唯一顺序的关联
我有两个模型与“有很多:通过”关联。它运行良好,但我需要为每个组合添加唯一的顺序。 假设我们有模型火车和车厢(火车车厢),每列火车都有独特的车厢组合Ruby on rails 轨道4+;有很多:通过与唯一顺序的关联,ruby-on-rails,ruby-on-rails-4,associations,Ruby On Rails,Ruby On Rails 4,Associations,我有两个模型与“有很多:通过”关联。它运行良好,但我需要为每个组合添加唯一的顺序。 假设我们有模型火车和车厢(火车车厢),每列火车都有独特的车厢组合 # /models/train.rb class Train < ActiveRecord::Base has_many :carriages, through: :combinations end # /models/carriage.rb class Carriage < ActiveRecord::Base has_ma
# /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>
在本例中,车厢5具有:
- 第1列第一名
- 在列车2中排名第二
- 列车3的最后一个位置
谢谢您可以将
位置
属性添加到您的组合
模型中,表示车厢
在列车
中的位置 您可以将位置
属性添加到组合
模型中,表示车厢
在列车
内的位置 我尝试使用Fred Willmore advice,但如果使用嵌套表单手动添加每个元素,则不需要此附加列。
您可以在这里找到Gem,并将此指南用于标准Rails表单我尝试使用Fred Willmore建议,但如果您使用嵌套表单手动添加每个元素,则不需要此附加列。
您可以在这里找到Gem,并将此指南与标准Rails表单一起使用,您可以拥有一个自定义位置表,然后通过该表加入并订购。也可以定制订单,但是当你添加更多的型号时,会变得很混乱。这里有一个主题,你可以有一个自定义的positions表,然后根据它进行连接和排序。也可以定制订单,但是当你添加更多的型号时,会变得很混乱。这里有一个关于这个话题的例子
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