【问题标题】:Ruby on Rails where statement using user attributeRuby on Rails where 使用用户属性的语句
【发布时间】:2017-08-12 17:36:22
【问题描述】:

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

@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

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

【问题讨论】:

  • 一般来说,你能告诉我你想做什么吗?
  • 你的模型是如何连接的。
  • 发布您的模型代码。
  • @ShamsulHaque 模型代码发布
  • @SebastiánPalma 模型代码已发布

标签: ruby-on-rails


【解决方案1】:

所以我简单地使用以下方法解决了这个问题:

@posts = Post.where('user_id = ?', @network.user_ids)

【讨论】:

  • 好吧,考虑到您的模型或原始问题,这一切都没有意义。
【解决方案2】:

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

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

你叫什么

:user.network.first

说明用户与网络有has_one 关系

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    相关资源
    最近更新 更多