【发布时间】:2018-03-25 22:13:41
【问题描述】:
我有以下使用 ActiveRecord 的“查询”:
Product.joins(product_attr_vals: [attr_val: [:attr]])
.joins(:product_model)
.where(product_models: {id: @product_model.id}, attrs: {id: attr.id})
.distinct
.count
我无法理解为什么有时,在 joins() 中,rails 接受复数形式的表名而其他人接受单数形式。
-
product_attr_vals:(单数时无效 -> product_attr_val) attr_val::attr:product_model
一些信息:
models/product_model_attr_val.rb
class ProductModelAttrVal < ApplicationRecord
validates :product_model_id, uniqueness: { scope: :attr_val_id }
belongs_to :product_model
belongs_to :attr_val
end
db/migrate/db_creation.rb
create_table :product_model_attr_vals do |t|
t.references :product_model, null: false, foreign_key: true
t.references :attr_val, null: false, foreign_key: true
t.timestamps
end
【问题讨论】:
-
相关:stackoverflow.com/questions/23633301/…(
joins/includes/preloadvswhere:何时使用关系名称以及何时使用表名)
标签: ruby-on-rails database join activerecord