我在rails中遇到了一个命名空间模型的问题。我的应用里有这些模型
Request
Food
Clothing
Request::Food
Request::Clothing
我传递了一个像Request::Food
这样的命名空间模型作为参数,但是函数仍然调用了Food
,而它应该调用的是命名空间模型Request::Food
。我试过像Requests::Food
一样更新命名空间,它工作正常。
这件事有什么特别的原因吗?有什么方法可以保留这个命名空间Request::Food
,Request::Clothing
吗?
范例:
def authorize(resource)
policy_object = "#{resource.name}Policy".classify.constantize
end
authorize(Request::Food)
返回FoodPolicy
而不是RequestFoodPolicy
1条答案
按热度按时间s8vozzvw1#
在为模型分配名称空间时,您必须注意一些事情-
1.你需要显式地命名你的表,因为
model b
将指向table b
,但model a:b
将不指向table b
,你也必须提到这一点。1.确保你不会错过改变
a:b model
在以往任何时候都需要作为model b
和model a:b
是不同的,现在,最好去与新的名称,如model a:b
和model c
。所以你的模型应该是-
您需要调用
Request::Food.first.get_food
要验证这一点,请访问
rails console
并点击Request::Food.new,以查看被点击的表。