如何解决如何在设计响应中包含用户 has_many 关联?
希望你们一切顺利,
我有这个用户,它与一个地址模型(用户 has_many 地址)有一个 has_many 关联。我如何配置设计以在登录时返回所有用户地址?
该关联已经运行良好,但我似乎无法找到一个简单的解决方案,而不是执行另一个请求以从用户那里获取地址信息,或者可能覆盖设计会话控制器。 (我没有尝试,因为我不知道如何在不弄乱默认配置的情况下准确地做)
更新:我正在使用设计令牌身份验证来处理会话
解决方法
Devise::SessionsController#create 看起来像这样:
class Devise::SessionsController < DeviseController
# ...
def create
self.resource = warden.authenticate!(auth_options)
set_flash_message!(:notice,:signed_in)
sign_in(resource_name,resource)
yield resource if block_given?
respond_with resource,location: after_sign_in_path_for(resource)
end
end
respond_with
是来自 responders gem 的一个方法,它实际生成响应。最简单的方法是覆盖该方法,但您也可以创建自己的响应程序,该响应程序包含在自述文件中。
class MySessionsController < Devise::SessionsController
private
def respond_with(resource,**options)
return super unless action_name == 'create'
# generate whatever response you want
end
end
# config/routes.rb
devise_for :users,controllers: {
sessions: 'my_sessions'
}
,
通过实施在此问题中找到的答案解决:https://github.com/lynndylanhurley/devise_token_auth/issues/597#issuecomment-291893591
user.rb
def token_validation_response
self.as_json(include: :addresses)
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。