Ruby on Rails where语句使用用户属性

时间:2017-08-12 17:36:22

标签: ruby-on-rails

基本上我想要这样的东西:

@network = Network.where(:id => current_user.network_ids).first
@posts = Post.where(:user.network.first => @network).order("created_at DESC")

但它基本上不会识别第二行中的列:user,因为实列是user_id。我甚至尝试过:

@posts = Post.where('User.find(user_id).network.first =?',network )  

没有运气

关于我如何处理这个问题的任何想法。

模特:

 class User
    has_and_belongs_to_many :network
    has_many :posts
  end
  class Network
    has_and_belongs_to_many :user
  end
  class Post
    belongs_to :user
  end

我基本上想根据当前用户的网络过滤帖子

2 个答案:

答案 0 :(得分:0)

所以我只是通过使用:

来解决问题
@posts = Post.where('user_id = ?', @network.user_ids)

答案 1 :(得分:-1)

正如我所看到的,您有posts属于用户,然后user有很多networks,因此您的查询应该是

@posts = Post.where(:user.networks.first => @network).order("created_at DESC")

你所说的是

:user.network.first

表示用户与网络有has_one的关系