【发布时间】:2017-08-25 14:22:14
【问题描述】:
我可以自己想办法实现这一点,但我希望有人可以链接到 gem,或者可能只是 ruby 中适用的排序算法。
问题
跟踪两个模型之间的关联顺序。允许用户使用下面的示例模型创建children、belong_to 和parent,并按最喜欢到最不喜欢的顺序排列它们。
明确地说,我不是是指订购ActiveRecord::Relation 或在 sql 语句中添加 order by 子句。
我希望用户能够 CRUD children,并以相同的形式 CRUD 他们的订单(因为他们的订单可能会存储在同一个模型中)
我正在考虑使用favourite_order 列(参见下面的架构)来跟踪订单,但是,如果孩子 4 被提升为第一名(吃了一只熊,升级了),其余的会相应地冒泡,即第一名将成为第二名等等。另一个例子,第二个孩子被删除(死于森林大火),所有低等级的孩子都会自动提升,即他们的等级会增加一个。
知道提供此功能的任何 gem 或我可以用来自己实现它的任何排序算法吗?
示例
app/models/parent.rb
class Parent < ApplicationRecord
has_many :children
end
app/models/child.rb
class Child < ApplicationRecord
belongs_to :parent
end
db/schema.rb
ActiveRecord::Schema.define(version: 20170812100949) do
create_table "children", force: :cascade do |t|
t.integer "parent_id"
t.text "child_name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "parents", force: :cascade do |t|
t.text "parent_name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end
【问题讨论】:
-
父母和/或孩子是否属于特定用户?我想知道
Parent A及其Children是否应该为每个User以不同的方式订购,或者Parent A及其Children是否只有一个有效订单 -
不,先生,唯一涉及的模型是
child和parent。所谓用户,我指的不是使用该软件的人。 -
所以你可以确认 Parent 和它的孩子之间只有一个真实的顺序,对吧?
-
是的。但是,我在 Leito 的回答中找到了我需要的信息。感谢您的帮助。
标签: ruby-on-rails ruby rails-activerecord ruby-on-rails-5