如何根据属于第一个模型的另一个模型的属性来查询模型?
如果我有一个模型Person
,其中每辆Vehicle
和每辆Vehicle
都可以是car
或motorcycle
,那么我怎样才能查询所有拥有摩托车的人和有汽车的人?
我不认为这是正确的:
Person.joins(:vehicles).where(vehicle_type: 'auto') Person.joins(:vehicles).where(vehicle_type: 'motorcycle')
你可以做如下:
Person.includes(:vehicles).where(vehicles: { type: 'auto' }) Person.includes(:vehicles).where(vehicles: { type: 'motorcycle' })
请小心.joins
和.includes
:
# consider these models Post # table name is posts belongs_to :user #^^ User # table name is users has_many :posts #^ # the `includes/joins` methods use the relation name defined in the model: User.includes(:posts).where(posts: { title: 'Bobby Table' }) #^ ^ # but the `where` uses the exact table name: Post.includes(:user).where(users: { name: 'Bobby' }) #^^^ ^
一个棘手的问题:
Post belongs_to :author, class_name: 'User' User # table named users has_many :posts Post.includes(:author).where(users: { name: 'John' }) # because table is named users
类似的问题:
- 协会命名未find在rails协会可能拼写错误的问题
- Rails活动logging查询与“存在”的关联
- Rails 3,has_one / has_many和lambda条件
- Rails 4的范围是find没有孩子的父母
- join多个具有活动logging的表格
- Rails:查找所有关系具有指定属性的用户