繁体   English   中英

Rails 5连接关联的过滤器

Rails 5 joins filter associated

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

如何使用联接查询Rails 5中的关联模型? 在查看文档和这个问题之后,我尝试过的是DoctorLocation.joins(:location).where(:location => {:confidence => 2}) 我究竟做错了什么? 我的查询未返回任何结果。

pry(main)> DoctorLocation.joins(:locations).where(:locations => {:confidence => 2})
=> #<DoctorLocation::ActiveRecord_Relation:0x3ff735a09d8c>

class DoctorLocation
   belongs_to :location

end

class Location
   has_many :doctor_locations, dependent: :destroy

end

移民

   create_table :doctor_locations do |t|
      t.integer :doctor_profile_id
      t.integer :location_id
      t.text :uuid
      t.timestamps null: false
    end


 create_table :locations do |t|
      t.string   :address
      t.integer  :ordinal, :default => 1
      t.integer  :doctor_profile_id
      t.text     :uuid
      t.timestamps
    end

 add_column :locations, :confidence, :integer
2 个回复

您实际上有正确的查询。 而是您的测试方法已损坏。

class DoctorLocation < ApplicationRecord
  belongs_to :location
  def self.with_confidence(c)
    DoctorLocation.joins(:location).where(locations: { confidence: c })
  end
end

通过的规范确认它可以按预期工作:

require 'rails_helper'

RSpec.describe DoctorLocation, type: :model do

  after(:each) { DoctorLocation.destroy_all }
  it "includes locations with the correct confidence" do
    dl = DoctorLocation.create!(location: Location.create!(confidence: 2))
    DoctorLocation.create!(location: Location.create!(confidence: 1))
    expect(DoctorLocation.with_confidence(2)).to include dl
    expect(DoctorLocation.with_confidence(2).count).to eq 1
  end
  it "does not include rows without a match in the join table" do
    dl = DoctorLocation.create!(location: Location.create!(confidence: 1))
    expect(DoctorLocation.with_confidence(2)).to_not include dl
  end
end

joins及其where (散列参数)中,您需要声明关联名称( location ),而不是表名称( locations ):

DoctorLocation.joins(:location).where(location: { confidence: 2 })

这通常是造成混乱的原因。

2 Rails过滤两个关联的模型

我有一个具有has_many和has_one音译功能的Passage模型。 我想过滤给定资源ID的关联。 假设我有一个资源ID数组,希望在通过时过滤Content::Translation和Content::Transliteration关联,我该怎么做? ...

3 Rails过滤器关联记录[重复]

这个问题已经在这里有了答案: 预加载具有动态条件的has_many关联 4个答案 我有帖子和评论模型帖子has_many:commetns评论归属于:post我想检索所有*带有特定用户评论的帖子。 (所以我想获得每一个帖子(甚至是那些没有评论的帖子),并过滤掉某些 ...

4 RAILS - 连接三个表以获取基于计数的关联记录

我有 3 个模型,即客户、商店、配件。 关联 - 店铺有_许多客户,店铺有_很多配件,客户所属_商店,配件所属_店铺。 我想获取拥有 0 个以上配件和最低客户(包括 0 个)的商店。按商店 ID 分组。 我写了这个查询 - 给我这个错误 - 任何解决方案都会非常有帮助。 谢谢 ...

5 如何从Rails中的控制器过滤相关记录?

我有两个模型, Article和Comment与一对多的关系。 我的观点如下: 从控制器过滤@articles很容易,例如: 我可以轻松过滤我视图中的评论: 但我不想在我的视图中输入order('created_at asc').last(4)逻辑。 如何从控制器 ...

7 与内部联接相关的问题

我的目的是要生成一份详细的报告,以显示在过去的12个月中以及他们的最后交易日期中哪些客户完全没有交易。 上面的SQL代码产生 以上结果恰好显示了我想要的所有内容,但有一点问题。 所有客户在最近12个月内都没有交易,但是大卫克莱尔在12个月内和之前都交易过。目的是向那些过去12个 ...

8 当前用户的Rails设置过滤器-连接关联问题

我有一个用于表单的过滤器,我只想显示那些具有与当前用户匹配的电子邮件的表单。 涉及的属性:用户的电子邮件,职业的收件人,地区名称 职位归属属于:region,我目前正在显示Region,并在其视图中显示以下内容: 因此,逻辑是将current_user.email与所有Car ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM