我正在尝试通过 rails 5.2 中的服务对象方法将操作转发给另一个控制器。
创建操作应该传递创建操作的用户 ID,但我未能正确传递该参数。
业务逻辑如下:用户租用资产,潜在租用者提出请求,当资产所有者同意访问时,在另一个控制器中创建租用用户作为客户端组织访问。
我正在尝试解决客户端控制器中的创建操作,如下所示:
在租金控制器中:
private
def visit(room, rent)
@newclient = NewclientService.create(params)
if @newclient.save
rent.Approved!
...
else
rent.Declined!
...
end
然后在 app/service/newclient_service.rb
module NewclientService
class << self
def create(params)
@rent = Rent.find_by(id: params[:id])
user = @rent.user_id
name = @rent.user.fullname
email = @rent.user.email
Client.create(user_id: user, name: name, email: email)
end
end
end
这段代码完成了这项工作。数据库已满,验证和强大的参数似乎有效,在我看来它足够健壮/安全。
问题:服务对象(我的方式?)路由是转发该操作的最首选方式吗?
谢谢你的帮助,