gpt4 book ai didi

ruby-on-rails - 如何在 Rails Active Records 中为模型创建别名

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:43 25 4
gpt4 key购买 nike

我有一个模型 Author。我想为每个 Article 分配一个 Author,但并非所有作者都是 AdminUser(我的其他模型)。我如何设置模型关联,以便每篇文章都必须有一个作者,但不是每个作者都必须拥有管理员权限?

如果我可以 @article.author 它会返回作者,即使它是 AdminUser

class Author  < ActiveRecord::Base
attr_accessor :first_name, :last_name
has_many :articles

end

class AdminUser < ActiveRecord::Base

attr_accessor :first_name, :last_name, #...a bunch of authentication params, passwords, salt, etc

has_many :articles

end

我更喜欢的是不必说@article.admin_user..我希望它总是说@article.author..但我希望能够询问@admin_user.articles。

最佳答案

有几种方法。

  1. 使用单表继承 (STI)

    class User < ActiveRecord::Base
    has_many :articles
    end

    class Author < User
    end

    class AdminUser < User
    end

    class Article < ActiveRecord::Base
    belongs_to :user
    end

    这将要求 users 表具有所有后代使用的所有属性,并且将需要一个 type 列以便 AdminUser 记录记住它是一个 AdminUser

  2. 使用多态关联

    class Author < ActiveRecord::Base
    has_many :articles, as: :owner
    end

    class AdminUser < ActiveRecord::Base
    has_many :articles, as: :owner
    end

    class Article < ActiveRecord::Base
    belongs_to :owner, polymorphic: true
    end

    这要求 articles 具有 owner_idowner_type(字符串)列。

关于ruby-on-rails - 如何在 Rails Active Records 中为模型创建别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21246851/

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