如何在rails中向模型添加关联



我有三个模型

class SupplierVariant
  belongs_to  :supplier
  belongs_to  :variant
end
class Supplier
  has_many :variants, :through :supplier_variants
end
class Variant
end

现在我想知道,如何获得特定变体的供应商。我添加了一个关联变型类中的has_one :supplier through: :supplier_variant

但是当我执行以下查询时,我得到下面提到的错误

p=Spree::Variant.find(384)
  Spree::Variant Load (1.2ms)  SELECT  "spree_variants".* FROM "spree_variants" WHERE "spree_variants"."deleted_at" IS NULL AND "spree_variants"."id" = ? LIMIT 1  [["id", 384]]
 => #<Spree::Variant id: 384, sku: "CHG137-Blue-XL", weight: #<BigDecimal:a396b38,'0.5E3',9(27)>, height: #<BigDecimal:a396a20,'0.5E2',9(27)>, width: #<BigDecimal:a3968e0,'0.45E2',9(27)>, depth: #<BigDecimal:a396778,'0.75E2',9(27)>, deleted_at: nil, is_master: false, product_id: 228, cost_price: #<BigDecimal:a3962c8,'0.9E3',9(27)>, position: 4, cost_currency: "INR", track_inventory: true, tax_category_id: 3, updated_at: "2015-05-25 05:58:19", stock_items_count: 4> 
p.supplier
**NoMethodError: undefined method `supplier' for #<Spree::Variant:0x0000000a3973a8>**

如何在rails模型文件夹中添加适当的关联?以及添加后如何使用它们?表之间的连接操作依赖于我们在模型中定义的关联吗?

您需要添加适当的关联到您的Variant类,例如has_many :suppliers, :through :supplier_variants。现在它只是一个没有方法的空类,因此出现了未定义方法错误。

class SupplierVariant
  belongs_to  :supplier
  belongs_to  :variant
end
class Supplier
  has_many :supplier_variants
  has_many :variants, :through :supplier_variants
end
class Variant
  has_many :supplier_variants
  has_many :suppliers, :through :supplier_variants
end

纠正这些模型的关联

@variant = Variant.last
@suppliers = @variant.suppliers

它会给你特定的变种的供应商。

相关内容

  • 没有找到相关文章

最新更新