gpt4 book ai didi

ruby-on-rails - Michael Hartl 的 rails 教程 : reusing sessions resource for multiple User types

转载 作者:行者123 更新时间:2023-12-04 07:30:28 24 4
gpt4 key购买 nike

我正在通过 Micheal Hartl 的 tutorial 学习 Ruby on Rails .

在我的 Web 应用程序中,我需要两种类型的用户,称为发布者和订阅者。目前我有一个发布者资源和一个订阅者资源。我希望他们都能够使用 session 资源进行登录/注销。

我正在寻找有关如何实现这一点的一些方向。我的发布者和订阅者资源是否应该从 User 资源继承,例如,以下代码通过多态工作?

def create
user = User.find_by_email(params[:session][:email])
if user && user.authenticate(params[:session][:password])
# Sign the user in and redirect to the user's show page.
else
# Create an error message and re-render the signin form.
end
end

发布者和订阅者没有很多共同的领域和不同的能力,所以我认为应该将它们建模为两个独立的资源,但是如何让它们共享 Sessions 资源呢?

最佳答案

一种可能的解决方案是使 用户 类仅用于登录,用户将通过多态关联属于发布者或订阅者,如下所示:

class User < ActiveRecord::Base
belongs_to :identifiable, :polymorphic => true
end

如果你不知道什么是多态关联, you should read this tutorial .

此代码将像这样使用:
subscriber = Subscriber.find(1)
user = User.new
user.identifiable = subscriber
user.save

所以,你的 订阅者 发布者 将与一个用户相关, :identifiable 字段是与另一个对象的关系(多态关系)。

有了这个,用户可以使用这个可识别的关联作为 订阅者 发布者 和你的 session Controller 将被重用(以及所有的身份验证逻辑,因为它将存在于 用户 而不是这些其他类中)。

关于ruby-on-rails - Michael Hartl 的 rails 教程 : reusing sessions resource for multiple User types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10876059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com