我有模型Board
的层次结构(使用祖先gem实现)。
我希望有两个模型,而不是一个模型和一些范围:Board
用于根级元素(ancestry
列值为nil
)和{{1}其余的(Category
列值为ancestry
)。他们将使用相同的表not nil
。
我该怎么办?
答案 0 :(得分:11)
您可以使用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
答案 1 :(得分:5)
您可以指定类别模型的表名并生成默认范围:
class Category < ActiveRecord::Base
self.table_name = "boards"
default_scope where('boards.ancestry IS NOT NULL')
end
你应该能够与两种型号的电路板进行互动 - 表。
或者您只使用一个型号并为特定的东西添加两个模块。这取决于您的偏好。