Ruby ActiveRecord:从中查找数据有许多关系

Ruby ActiveRecord:从中查找数据有许多关系,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我正在尝试使用activerecord在rails中查找具有多个关系的记录。我很难对这个问题进行措辞,但以下是我想要找到的: has_many :var, :through => :line 上述代码行包含在模型中。我想返回具有特定:var的记录。例如,如果:var=1234,我想返回所有与之相关的记录。根据您的评论,我相信您需要这样的内容 Order.where(:var => 1234) 或者如果您更喜欢纯sql Order.where('var = 1234') Acti

我正在尝试使用activerecord在rails中查找具有多个关系的记录。我很难对这个问题进行措辞,但以下是我想要找到的:

has_many :var, :through => :line

上述代码行包含在模型中。我想返回具有特定:var的记录。例如,如果:var=1234,我想返回所有与之相关的记录。

根据您的评论,我相信您需要这样的内容

Order.where(:var => 1234)
或者如果您更喜欢纯sql

Order.where('var = 1234')

Activerecord有大量关于这方面的文档,例如,

假设您的主类名为
Order
line
是Order的归属关系,
vars
是line的多个关系,您正在搜索Var id

Order.joins(line: :vars).where('"vars"."id" = ?', 1234).uniq

has_many定义了两个表(一对多)之间的关系,甚至“通过”了三个表。它不会对具有特定值的记录进行查询,您可以在类的实例上使用“where”关键字和其他关键字。我建议您先阅读一下activecord,例如,我可以说Order.product,并获取与该订单相关的所有产品。我“我想得到的订单只有与之关联的特定值的var。问题是var不是订单表中的一个字段,也许唯一的方法是循环检查所有订单并检查与之关联的var?当您声明:var=1234时,您必须更清楚您想要什么,那么它是在一个相关的表/类中吗?我想我不明白:through关键字在has\u many关系中的含义。我可以通过在给定的行表中使用:var id到达那里。谢谢你的帮助。