提问人:Sidney John Diongzon 提问时间:9/21/2023 最后编辑:Sidney John Diongzon 更新时间:9/22/2023 访问量:61
Ruby On Rails - 命名空间资源
Ruby On Rails - Namespacing Resources
问:
我在 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
答:
0赞
Milind
9/22/2023
#1
在命名模型时,您必须注意以下几件事 -
- 您需要明确地将表命名为 will point to but will not point to ,您也必须提及。
model b
table b
model a:b
table b
- 确保你不会错过任何需要的地方的更改,因为现在和现在不同了,最好使用新名称,如 和 。
a:b model
model b
model a:b
model a:b
model c
所以你的模型应该是这样的——
class Request::Food < ApplicationRecord
## this should not be foods
self.table_name = 'food_requests'
## instance method
def get_food;end
您需要致电Request::Food.first.get_food
要验证这一点,请访问并点击 Request::Food.new 以查看被击中的表是什么。rails console
评论
0赞
Sidney John Diongzon
9/22/2023
事情也应该指向.我只需要为我制作一个命名间隔资源,以具有一个动态函数来访问命名间隔模式,如 等。Request::Food
Food
Request::Food::CreateService
Request::FoodPolicy
0赞
Benjamin Scharbau
9/22/2023
Rails 通常希望将表命名为 。如果由迁移创建,则应自动处理该问题。request_foods
rails generate model Request::Food
0赞
Sidney John Diongzon
9/22/2023
@BenjaminScharbau 我在这里实际做的是继承自Request::Food
Food
class Request::Food < Food
0赞
Milind
9/22/2023
如果它是 STI,除非您使用 TYPE,否则它将始终调用食物。希望你能@SidneyJohnDiongzon
评论
Request::Food
Food
Request::Food
Food