抓住所有用户的活动帖子

时间:2016-11-17 20:57:23

标签: ruby-on-rails ruby activerecord

active_posts的{​​{1}}实例方法不适用于我的User模型。

我抓取user条记录,然后根据该记录,我需要加入blogsposts表格,然后按帖子过滤{{1} }属性,以便仅返回active的有效posts

user

我运行以下内容:

class User < ApplicationRecord
  has_many :blogs
  has_many :posts, through: :blogs

  def active_posts
    joins(blogs: :posts).merge(Post.active).distinct
  end
end

class Blog < ApplicationRecord
  belongs_to :user
  has_many :posts
end

class Post < ApplicationRecord
  belongs_to :blog
  belongs_to :user, through: :blog

  scope :active, -> {where(active: true}
end

这是错误:

  

NoMethodError   未定义的方法&#39;加入&#39;在用户记录

1 个答案:

答案 0 :(得分:0)

刚刚意识到我的错误。

只需在ps -ef | grep mysql ... watrudoin 29512 29443 0 12:57 pts/4 00:00:00 mysql -u MyUserName -phunter2 -e SHOW DATABASES 方法中调用posts.active

active_posts

def active_posts posts.active end 用于集合。因此,您可以在模型中的类方法上使用joins,而不是在实例方法中使用joins。简单的错误。