Rails:跨多个模型查询的最佳方式

时间:2014-02-14 05:04:23

标签: ruby ruby-on-rails-3

我有一个简单的rails应用程序,有三个模型,我想要做的是查询不同的模型。

我的应用模型如下:

user.rb:
    has_many :forms
    has_one :user_info

user_info.rb
    attr_accessible :state

form.rb:
    attr_accessible :status
    belongs_to :user

我想要做的是查看有多少用户具有特定状态,以及谁处于特定状态。基本上,我试图做这样的事情:     .where(“status =?AND state =?”,“open”,“AZ”)

有没有rails方式来进行这种查询? 在此先感谢您的帮助,

2 个答案:

答案 0 :(得分:2)

将其他表加入User表,然后在where子句中使用它们:

User.joins(:user_info, :forms).where(user_infos: {state: "open"}, forms: {state: "AZ"})

答案 1 :(得分:1)

我最近为这个目的做了一个宝石:

activerecord_where_assoc

有了它,它看起来像:

User.where_assoc_exists(:user_info, state: "open")
    .where_assoc_exists(:forms, state: "AZ")

它解决了许多潜在的问题,这些问题可以通过连接来实现。我整整都专门针对这些问题:Alternatives problems