gpt4 book ai didi

ruby-on-rails - Rails 3 App, "following"不同类型的模型

转载 作者:行者123 更新时间:2023-12-04 06:30:33 25 4
gpt4 key购买 nike

我正在构建一个 rails 3 应用程序。我将尽我所能并尽可能简洁地描述这个应用程序。

此应用程序中的两种主要模型类型是:

  • 用户
  • 企业

  • 然后还有另外两个模型:
  • 分类
  • 子类别(嵌套在
    分类)

  • 它们如何协同工作:企业可以拥有(或属于)任意数量的类别(以及任何相关的子类别)。

    用户可以选择要“关注”的类别,即他们选择要在其 Feed 中显示的类别,属于这些类别的任何企业都将显示在 Feed 中(与子类别相同)

    需要注意的是,类别和子类别仅由管理员指定,用户/企业不能添加/销毁类别,只能遵循现有类别

    我如何实现这一点的计划是创建一个具有以下属性的“以下”模型
  • 用户 ID
  • followable_id
  • followable_type

  • 其中将有两个“followable_types”:用户和业务。正如你所看到的,这是一个不完全是多态的模型。

    我遇到麻烦的地方是方法。例如,我将如何创建属于用户关注的类别的所有企业的列表?这将需要一些棘手的查询和大量的hackery。这让我相信我是从错误的角度来解决问题的。

    有人可以引导我朝着正确的方向前进吗?也许我的架构需要一些工作。或者给我一个关于我应该如何编写我的方法的提示。

    谢谢!!

    最佳答案

    鉴于您将定期执行的查询,我可能会在这种情况下取​​消多态性并执行以下操作:

    class Customer < ActiveRecord::Base
    has_and_belongs_to_many :categories
    end

    class Business < ActiveRecord::Base
    has_and_belongs_to_many :categories
    end

    class Categories < ActiveRecord::Base
    has_and_belongs_to_many :customers
    has_and_belongs_to_many :businesses
    end

    然后执行您建议的查询的代码非常简单:
    Business.joins(:categories).where('categories.id IN (?)', a_user.categories.map(&:id))

    关于ruby-on-rails - Rails 3 App, "following"不同类型的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5469472/

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