对相关记录的约束

时间:2014-08-20 21:28:12

标签: ruby-on-rails ruby-on-rails-4 pundit

我没有得到关于如何定位Active Record查询的概念(没有新内容)。我想只接收相关记录中存在某种情况的记录。我遇到的例子恰好是多态的,以防万一。我确信在某处可以解释这个问题,但我无论出于何种原因都没有找到它。

我的模特:

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

class Member < ActiveRecord::Base  
  has_one :user, as: :owner
end

我想基本上在Member类上运行具有某个owner_id / owner_type的相关记录的位置。

假设我们有5个拥有ID 1-5的会员,我们有一个用户,其owner_id设置为3,owner_type设置为'Member'。我想只收回一个ID为3的Member对象。我试图在Pundit中运行它,因此我不仅仅是在用户端进行此操作。

感谢您一如既往的帮助!!!

1 个答案:

答案 0 :(得分:1)

根据您所说的评论很接近,我说您应该可以这样做:

Member.joins(:user).where('users.id = ?', current_user.id)

但根据我如何阅读您的问题,我会说您想要这样做:

Member.joins(:user).where('users.owner_id = ?', current_user.id)

假设current_user.id为3。

可能有一种更简洁的方法,但这是我通常使用的语法。如果这些都不对,请尝试在问题中更清楚一点,我们可以从那里开始! :)