【问题标题】:Query model with belongs_to via params通过 params 使用 belongs_to 查询模型
【发布时间】:2014-10-30 14:07:44
【问题描述】:

我的控制器中有这个以参数为参数的查询

@animal = Animal.where(animal_type: params[:animal_type], rehomed: params[:rehomed])

我想做的是从另一个模型中查询一列

class Animal
 belongs_to :user
end

我认为我可以使用 .includes 是否正确?

@animal = Animal.includes(:user).where('users.town = ?', "#{params[:animal_town]}")

我遇到语法错误,对如何构建此查询有点迷茫,理想情况下,我想查询城镇的用户表以及 animal_type 和 rehomed 的动物表

【问题讨论】:

    标签: ruby-on-rails ruby postgresql ruby-on-rails-4 rails-activerecord


    【解决方案1】:

    不,你实际上应该使用joins

    @animal = Animal.joins(:user).where(users: { town: params[:animal_town] })
    

    顺便说一句,"#{params[:animal_town]}" 没有意义,因为它等同于 params[:animal_town]

    【讨论】:

    • 啊,我明白了,感谢"#{params}"的澄清
    • 我将如何为我的动物模型传递其余参数?我可以把它们锁起来吗?
    • @Richlewis 这取决于你有什么参数以及你需要执行什么查询。
    • 所以这样做是行不通的,或者我应该说这样做不是这样做的方法Animal.where(animal_type: params[:animal_type], rehomed: params[:rehomed]).joins(:user).where(users: {town: params[:animal_town]})
    • 实际上可行,但这是最有效的方法吗?
    猜你喜欢
    • 1970-01-01
    • 2013-04-02
    • 2015-07-25
    • 2013-01-02
    • 2014-11-01
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    相关资源
    最近更新 更多