SORU
21 Ocak 2011, Cuma


Nasıl Rails3 ilişkili ilişkileri unscoped kullanılır?

Ürün bilgileri güvenlik kısıtlamaları nedeniyle varsayılan bir kapsamı var.

class Product < ActiveRecord::Base
  has_many :photos

  default_scope where('visible = 1')
end

İlgili Foto modelim, ancak, aynı zamanda görünür olmalıdır olmayan ürünler bulmak zorunda.

class Photo < ActiveRecord::Base
  belongs_to :product
end

my_photo.product

Diğer durumlarda, Product.unscoped.find_by_title('abc') default_scope, örneğin bypass için unscoped kullanabilirim. Ancak:

Nasıl bir rekor dernekleri kullanırken kapsamı kaldırmak için?

my_photo.unscoped.product my_photo bir yöntem unscoped adı yok gibi bir anlam ifade etmiyor. Ne my_photo.product.unscoped my_photo.product zaten nil olabilir mantıklı.

CEVAP
21 Ocak 2011, Cuma


Oh. Kendimi kandırdım. Aşağıdaki işe yaramayacağını düşündüm... ama yok:

Product.unscoped do
  my_photo.product
end

Bypass olması gereken default_scope ile model üzerinde unscoped aramak gerektiğine dikkat edin.

Ayrıca, miras saygı duyulması gerekir. Eğer varsa class InsuranceProduct < Productclass FinancialProduct < Product Product aşağıdaki iki kombinasyonu tüm default_scope çalışır:

InsuranceProduct.unscoped do
  my_record.insurance_products
end

FinancialProduct.unscoped do
  my_record.financial_products
end

Product.unscoped do
  my_record.products
end

Ancak, aşağıdakiolacak iş değilkapsam Product tanımlanmış olmasına rağmen:

Product.unscoped do
  my_record.financial_products
end

Ruby / Rails STI başka bir cilvesi sanırım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Apple

    Apple

    22 HAZİRAN 2005
  • Brandon McCrary

    Brandon McCr

    15 Ocak 2012
  • HowtoDrawAndPaint

    HowtoDrawAnd

    24 EKİM 2010