ruby-on-rails - Rails 根据关联属性查询记录

标签 ruby-on-rails

我正在尝试根据关联记录的属性创建查询,但失败了

我有以下型号:

class CompanyPay < ActiveRecord::Base
  has_many :ee_pay
  has_many :pay, :through => :ee_pay 
end

class EePay < ActiveRecord::Base
  belongs_to :company_pay
  has_many :pay
end

class Pay < ActiveRecord::Base
  belongs_to :ee_pay
  has_one :company_pay, :through => :ee_pay
end

我正在尝试创建一个查询,该查询返回所有 Pay 对象,其中属性 apply_paye在他们关联的 CompanyPay 上是 true .

从昨天开始,我一直在努力解决连接、作用域、lambda 等问题,但我只是在舞台上让自己更加困惑。

我想要的查询是这样的,但我只是不知道如何正确地表达它
@records = Pay.where(employee_id: current_employee.id, {|p| p.company_pay.apply_paye == true}).order(:id)

谁能帮我吗。我可以写一个单行查询吗?我应该使用连接吗?应该使用 lambda 吗?

感谢您的关注

Edit 1



我已经编辑了原始帖子,因为我错误地给出了错误的属性名称(应该是 apply_paye 而不是 taxable)。

尝试了 fylooi 提供的以下查询
@records = Pay.joins(:ee_pay => :company_pay).where(:pay => {:employee_id => current_employee.id }, :company_pay => {:apply_paye => true})

但我收到以下错误:
    ActiveRecord::StatementInvalid in PayLinesController#update

    PG::UndefinedTable: ERROR: missing FROM-clause entry for table "pay" LINE 1: ...any_pays"."id" = "ee_pays"."company_pay_id" WHERE "pay"."emp... ^ : SELECT "pays".* FROM "pays" INNER JOIN "ee_pays" ON "ee_pays"."id" = "pays"."ee_pay_id" INNER JOIN "company_pays" ON "company_pays"."id" = "ee_pays"."company_pay_id" WHERE "pay"."employee_id" = 1 AND "company_pay"."apply_paye" = 't' ORDER BY "pays"."id" ASC

Edit 2 - Solved



根据 David Aldridge 的建议,查询中的表名复数有效。

这是最后的查询:
@records = Pay.joins(:ee_pay => :company_pay).where(:pays => {:employee_id => current_employee.id }, :company_pays => {:apply_paye => true})

谢谢你的帮助

最佳答案

像这样的东西?

Pay.joins(:ee_pay => :company_pay).where(:company_pay => {:taxable => true})

关于ruby-on-rails - Rails 根据关联属性查询记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29729190/

相关文章:

ruby-on-rails - Rails 中 RESTful 路由的更新操作(PATCH 或 PUT)

mysql - 在 RoR 中以惯用的方式连接到外部数据库?

ruby-on-rails - 使用 Instagram gem 获取所有用户的图片

ruby-on-rails - 自制软件、FreeTDS、tiny_tds。 FreeTDS安装成功后为什么安装不了tiny_tds?

用于循环浏览图像的 Javascript(原型(prototype))插件

ruby-on-rails - 谷歌地图在第一次加载时不显示

mysql修改表外键!

javascript - 如何更新 Rails 中 Ajax 删除的记录?

ruby-on-rails - Rails Postgres 如何查询空对象的 jsonb 列?

ruby-on-rails - Rails 验证,数字 + 字母 + 空格