Ruby on rails Rails 5:未通过类名推断表名
我有以下rails模型:Ruby on rails Rails 5:未通过类名推断表名,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我有以下rails模型: class Connection < ApplicationRecord belongs_to :graph has_one :node, class_name: 'Person' end 我相信这是因为它查询的是节点,而不是它需要的人 我还尝试了连接(:people),但这会导致找不到名为people的关联的错误 如何实现这一点,而不必重命名关联?在连接中/包括将关联名称(单数(如果有一个)或复数(如果有多个)放入where子句中,将表名放入: Con
class Connection < ApplicationRecord
belongs_to :graph
has_one :node, class_name: 'Person'
end
我相信这是因为它查询的是节点
,而不是它需要的人
我还尝试了连接(:people)
,但这会导致找不到名为people
的关联的错误
如何实现这一点,而不必重命名关联?在
连接中
/包括
将关联名称(单数(如果有一个
)或复数(如果有多个
)放入where
子句中,将表名放入:
Connection.joins(:node).where(people: {first_name: 'Jane'} )
必须执行
连接(:node)
,但它随后起了作用。谢谢@点击投票赞成,因为它的有一个,你是对的!where子句中关于何时对表名进行复数化/不进行复数化的规则也不明确。例如,在上面的查询中,它需要复数,但在另一个查询中,它要求我使用单数表名ImportedContact.joins(contact\u info::phones).where(contact\u info:{phone:{phone:'123'})
@ClickUpvote在我的理解中,在where子句中,您将数据库中的表的名称完全相同(不管是复数还是单数,尽管事实上,表命名约定总是使用复数)在我上次给出的示例中,我的表名称为contact\u infos
,但除非我在where中以contact\u info
的形式提供,否则我会得到nil:NilClass的NoMethodError:undefined method\u reflect\u on\u association'
Connection.joins(:node).where(people: {first_name: 'Jane'} )