acts_as_list 在 has_many :through 和 sortablejs
acts_as_list on has_many :through and sortablejs
我有一个相当大的问题,在阅读了一整天的文章、文档和其他 Stack 问题后我一直无法解决。在这一点上,它只是在扰乱我的思想!
我有一个前端 Vue/Vuetify 的应用程序,我希望能够使用 sortablejs 重新排序数据-table。在后端,我有一个 Rails API,我想使用 acts_as_list gem 来为我处理重新排序。
理想情况下 我可以调用类似 Category.first.items.last.move_higher
的东西,但是因为我有一个连接模型,所以我不得不把 acts_as_list
和连接模型上的位置列而不是项目模型。有没有更好的安排方式?
category.rb
class Category < ApplicationRecord
has_many :categories_items
has_many :items, through: :categories_items, source: :item
accepts_nested_attributes_for :items
end
item.rb
class Item < ApplicationRecord
has_many :categories_items
has_many :categories, through: :categories_items, source: :category
end
类别_item.rb
class CategoriesItem < ApplicationRecord
belongs_to :category
belongs_to :item
acts_as_list scope: :category
end
使用该结构,您肯定需要通过调用连接模型上的方法来重新排序。但是,如果您愿意,可以使用 Rails delegate
class 方法将重新排序方法委托给连接模型:
https://api.rubyonrails.org/classes/Module.html#method-i-delegate
所有这些假设您需要 items
和 categories
来建立 has_and_belongs_to_many
类型的关系。
我有一个相当大的问题,在阅读了一整天的文章、文档和其他 Stack 问题后我一直无法解决。在这一点上,它只是在扰乱我的思想!
我有一个前端 Vue/Vuetify 的应用程序,我希望能够使用 sortablejs 重新排序数据-table。在后端,我有一个 Rails API,我想使用 acts_as_list gem 来为我处理重新排序。
理想情况下 我可以调用类似 Category.first.items.last.move_higher
的东西,但是因为我有一个连接模型,所以我不得不把 acts_as_list
和连接模型上的位置列而不是项目模型。有没有更好的安排方式?
category.rb
class Category < ApplicationRecord
has_many :categories_items
has_many :items, through: :categories_items, source: :item
accepts_nested_attributes_for :items
end
item.rb
class Item < ApplicationRecord
has_many :categories_items
has_many :categories, through: :categories_items, source: :category
end
类别_item.rb
class CategoriesItem < ApplicationRecord
belongs_to :category
belongs_to :item
acts_as_list scope: :category
end
使用该结构,您肯定需要通过调用连接模型上的方法来重新排序。但是,如果您愿意,可以使用 Rails delegate
class 方法将重新排序方法委托给连接模型:
https://api.rubyonrails.org/classes/Module.html#method-i-delegate
所有这些假设您需要 items
和 categories
来建立 has_and_belongs_to_many
类型的关系。