好的,我一直在为类别做的是我有2个表格类别(id,name)和SubCategories(id,name,category_id)通过模型相关。我设置了inverse_of,如下所示。 我的问题是,当我几年前在PHP中使用代码时,我们使用一个表“Categories”并且它有id,name,parent_id(默认为0)然后我们使用那个表来控制导航,面包屑和输出的输出其他导航元素。
class CreateCategories < ActiveRecord::Migration[5.1]
def change
create_table :categories do |t|
t.string :name
t.timestamps
end
end
end
class CreateSubCategories < ActiveRecord::Migration[5.1]
def change
create_table :sub_categories do |t|
t.string :name
t.integer :category_id
t.timestamps
end
end
end
class Category < ApplicationRecord
has_many :sub_categories, inverse_of: :category
end
class SubCategory < ApplicationRecord
belongs_to :categories, inverse_of: :sub_category
end
我已经在Ruby on Rails中编程了4年多了,我还没有找到一个真正好的“Rubyway”来实现这一目标。多年来,我已经看到了使用2表方法已经使用的示例,但是这似乎不太直观,因为当系统获得许多类别和子类别(如100)时,页面加载时间将受到影响。是否有人使用或知道像
这样的表格方法class CreateCategories < ActiveRecord::Migration[5.1] def change
create_table :categories do |t|
t.string :name
t.integer :parent_id
t.timestamps
end
end
end
我一直遇到的问题是模型以及如何让系统意识到记录可以属于同一个表上的记录。我已经能够手动实现它,但我还没有找到一种方法来设置它与formtastic和其他宝石像rails管理员会很好用它。
答案 0 :(得分:1)
似乎您正在寻找树形结构。 acts_as_tree已经存在了一段时间。如果您正在使用PostgreSQL,ltree
扩展名也可能会受到关注(以及pg_ltree gem)。