ruby-on-rails - 如何通过 activerecord 以两种不同的方式关联两个模型?
问题描述
我正在制作一个基本的论坛,比如使用 ruby on rails 的应用程序。我有可以创建组的用户。每个用户有_many 个组,每个组都属于一个用户。问题是我还希望一个用户能够订阅很多组,并且组有很多订阅用户。我不知道如何实现这一目标。
这是我希望能够编写的理想代码:
class Group < ApplicationRecord
#working code
belongs_to :user
has_many :subscriptions
#Non working code
has_many :subscribed_users, through: :subscriptions
end
class User < ApplicationRecord
#working code
has_many :groups
has_many :subscriptions
#Non working code
has_many :subscribed_groups, through: :subscriptions
end
class Subscription < ApplicationRecord
belongs_to :user
belongs_to :group
end
解决方案
试试这个:
class Group < ApplicationRecord
belongs_to :user
has_many :subscriptions
has_many :subscribed_users, through: :subscriptions, source: :user
end
class User < ApplicationRecord
has_many :groups
has_many :subscriptions
has_many :subscribed_groups, through: :subscriptions, source: :group
end
class Subscription < ApplicationRecord
belongs_to :user
belongs_to :group
end
推荐阅读
- sql - 订单/发票最佳实践:存储净额/毛额/增值税还是计算?
- azure-devops - 如果仅删除了管理员帐户,如何在 Visual Studio Team Services 上创建管理员帐户
- jenkins - Jenkins Pipelines: How to use withCredentials() from a shared-variable script
- android - Image imported to drawable folder but does not show up when trying to set it to an ImageView
- c# - 从客户端 (IIS) 检测到潜在危险的 Request.Path 值
- amazon-web-services - AWS Cloudwatch 调度
- java - Intellij with google-java-format - 如何在新行中制作 Java 注释
- spring-mvc - Spring Boot MVC Jsoup 无法初始化类 sun.security.ssl.SSLContextImpl$DefaultSSLContext
- automation - 如何附加到 Automation Anywhere 10.5 中的列表?
- ios - How to change height of UITableViewCell when constraint changes?