gpt4 book ai didi

ruby-on-rails - 如何在Rails3中使用unscoped关联关系?

转载 作者:行者123 更新时间:2023-12-02 20:30:15 25 4
gpt4 key购买 nike

由于信息安全限制,我对产品有默认范围。

class Product < ActiveRecord::Base
has_many :photos

default_scope where('visible = 1')
end

但是,在我关联的照片模型中,我还必须找到不应可见的产品。

class Photo < ActiveRecord::Base
belongs_to :product
end

my_photo.product

在其他情况下,我可以使用 unscoped为了绕过default_scope,例如在 Product.unscoped.find_by_title('abc') 中。但是:

使用记录关联时如何删除范围?

my_photo.unscoped.product 没有意义,因为 my_photo 没有名为 unscoped 的方法。 my_photo.product.unscoped 也没有意义,因为 my_photo.product 可能已经为零。

最佳答案

哦。我欺骗了自己。认为以下行不通......但它确实有效:

Product.unscoped do
my_photo.product
end

请注意,您必须使用 default_scope 对模型调用 unscoped这应该被绕过。

此外,必须尊重继承。如果您有class InsuranceProduct < Productclass FinancialProduct < Product和一个 default_scopeProduct ,以下两种组合都可以工作:

InsuranceProduct.unscoped do
my_record.insurance_products
end

FinancialProduct.unscoped do
my_record.financial_products
end

Product.unscoped do
my_record.products
end

但是,尽管 Product 中定义了范围,但以下将不起作用 :

Product.unscoped do
my_record.financial_products
end

我想这是 Ruby/Rails 中 STI 的另一个怪癖。

关于ruby-on-rails - 如何在Rails3中使用unscoped关联关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4758145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com