ruby-on-rails - Mongoid:belongs_to user 和 has_one user

标签 ruby-on-rails mongoid

我在我的应用中使用 Mongoid,但在为用户和订阅设置正确的关系时遇到问题。

我需要做的就是为 UserSubscription 模型建立一个简单的“拥有一个并且属于一个”关系。

class User
  has_many :user_subscriptions
end

class UserSubscription
  belongs_to :user

  has_one :user # user2 to which user1 is subscribed
  field :category, :String
end

我想要做的就是为每个用户提供一个订阅列表:

> user1.user_subscriptions # list of subscription objects
> user1.user_subscriptions << UserSubscription.create(:user => user2, :category => 'Test')
> user1.user_subscriptions.where(:user => user2).delete_all

如何实现这个?谢谢您的帮助。

最佳答案

问题是您有两个同名的关系,并且您的 has_one :user 关系需要一个逆关系。你总是可以尝试这样的事情:

class User
  include Mongoid::Document

  has_many :subscriptions
  has_many :subscribers, :class_name => "Subscription", :inverse_of => :subscriber
end

class Subscription
  include Mongoid::Document

  field :category

  belongs_to :owner, :class_name => "User", :inverse_of => :subscriptions
  belongs_to :subscriber, :class_name => "User", :inverse_of => :subscribers
end

那么您应该能够执行以下操作:

> user1.create_subscription(:subscriber => user2, :category => "Test")
> user1.subscriptions.where(:subscriber => user2).delete_all

关于ruby-on-rails - Mongoid:belongs_to user 和 has_one user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10410219/

相关文章:

ruby-on-rails - ActiveRecord AVG 计算

ruby-on-rails - Ruby on Rails 的最后 20%

ruby-on-rails - 设置 mongoid 哈希字段值

ruby-on-rails - 代理选择 : mod_proxy_balancer, nginx + 代理平衡器,haproxy?

ruby-on-rails - 从 Mysql2::Error 中救援

ruby-on-rails - Rails 语言环境文件无法加载

build - mongoid 新建与构建

ruby-on-rails - Mongoid:时间戳字符串的类型?

ruby-on-rails - 如何将 AWS 文档数据库与 Ruby On Rails 结合使用?与 3.6 版的兼容性?

ruby-on-rails - mongoid 最后一次调用时返回第一个文档的错误?