【发布时间】:2017-10-23 18:34:36
【问题描述】:
好的,所以我一直在为类别做的是我有 2 个表 Categories(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和其他gem(如rails admin)可以很好地使用它。
【问题讨论】:
-
投反对票的原因是什么?任何反对票都应包含理由。
标签: ruby-on-rails activerecord model ruby-on-rails-5