【发布时间】:2019-06-18 02:12:24
【问题描述】:
我正在尝试通过 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
这段代码完成了这项工作。数据库已满,验证和强大的参数似乎有效,在我看来它足够强大/安全。
问题:服务对象(我的方式?)路由是转发该操作的最首选方式吗?
感谢您的帮助,
【问题讨论】:
标签: ruby-on-rails service-object