1
を通じて推測されていない私は、次のレールモデルを持っている:Railsの5:表名はCLASS_NAME
class Connection < ApplicationRecord
belongs_to :graph
has_one :node, class_name: 'Person'
end
Person
への各connection.node
ポイント。
私は、特定の人々を指す接続を見つけることができるようにしたいと考えています。例えば
:
Connection.joins(:nodes).where(node: {first_name: 'Jane'})
しかしこれは私にエラーを与える:
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: missing FROM-clause entry for table "node"
LINE 1: SELECT "connections".* FROM "connections" WHERE "node"."firs...
^
: SELECT "connections".* FROM "connections" WHERE "node"."first_name" = $1
私はそれが必要として、そのはnodes
代わりのpeople
を問い合わせるためであると考えています。
私もjoins(:people)
を試しましたが、これは、関連付けられていないというエラーが発生しました。people
が見つかりました。
どのようにこれを達成するために、名前を変更することなく、関連付け?
あなたは関連名を入れて(単数(has_one
場合)または複数(
has_many
場合))、
where
句には、テーブル名を入れ
joins
/
includes
で
は '(加入をしなければなりませんでした) '、しかしそれはそれから働いた。ありがとう! –
@ClickUpvote確かに、それは 'has_one'なので、あなたは正しいです! –
where句のテーブル名をplularize/plularizeしない場合の規則もあいまいです。たとえば上記のクエリでは複数形が必要ですが、別のクエリでは単数形のテーブル名を使用する必要がありました。 –