繁体   English   中英

在Rails 5.1 中,如何为has_many 和belongs_to 关联编写finder 方法?

[英]In Rails 5.1, how do I write a finder method for a has_many and then belongs_to association?

我正在使用 Rails 5.1。 我有以下型号...

class Member < ApplicationRecord
  has_many :plans, :dependent => :nullify


class Plan < ApplicationRecord
  belongs_to :associate

我想编写一个查找器查询,该查询返回所有成员对象的计划,该计划具有 ID 为“1”、“2”或“3”的“关联”。 我怎么做? 我尝试编写一个仅查找 ID“1”的查找器,但在评估时出现此错误...

[8] pry(main)> Member.where(:plans => {:associate => {:id => "1"}}).count
   (0.7ms)  SELECT COUNT(*) FROM "Members" WHERE "associate"."id" IS NULL
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  missing FROM-clause entry for table "associate"
LINE 1: SELECT COUNT(*) FROM "members" WHERE "associate"."id" ...
                                              ^
: SELECT COUNT(*) FROM "members" WHERE "associate"."id" IS NULL
from /Users/davea/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:611:in `async_exec'

您必须首先使用joins来创建INNER JOIN查询。 之后,您就可以访问连接表:

Member.joins(plans: :associate).where(associates: { id: 1 })

暂无
暂无

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

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