我有模型的层次结构Board
(使用祖先 gem 实现)。
而不是一个模型和一些范围,我想有两个模型:Board
用于根级元素(ancestry
列值是nil
),Category
其余的(ancestry
列值是not nil
)。他们将使用同一张桌子boards
。
我怎么能做这样的事情?
我有模型的层次结构Board
(使用祖先 gem 实现)。
而不是一个模型和一些范围,我想有两个模型:Board
用于根级元素(ancestry
列值是nil
),Category
其余的(ancestry
列值是not nil
)。他们将使用同一张桌子boards
。
我怎么能做这样的事情?
set_table_name
您可以使用或self.table_name
根据您的 rails 版本明确定义模型的表。您还可以使用 为为此模型进行的每个查询定义默认范围default_scope
,因此两者的组合应该是您要搜索的内容:
class Category < AR:Base
self.table_name = 'boards'
default_scope where('boards.ancestry IS NOT NULL')
end
您可以指定类别模型的表名并生成默认范围:
class Category < ActiveRecord::Base
self.table_name = "boards"
default_scope where('boards.ancestry IS NOT NULL')
end
您应该能够通过板表与这两个模型进行交互。
或者你保留一个模型并为特定的东西添加两个模块。这取决于您的喜好。