我可以根据操作类型更改默认范围

时间:2012-10-19 22:10:31

标签: ruby ruby-on-rails-3

如果我正在寻找单个结果而不是集合,是否可以更改我的默认范围?

即。 Model.find(id)vs Model.all

default_scope lambda { where({:language_id => Language.default_or_first.id}) }

当我找到整段记录时,我真的只想以这种方式确定索引视图的范围。

当我做一个Model.find(3)时,我希望它能给我,即使它不是默认语言。

1 个答案:

答案 0 :(得分:0)

您可以使用unscoped忽略默认范围。

model = Model.unscoped.find(1)

将为您提供模型。

你也可以

model = Model.find_by_id!(1)

但我真的认为你应该考虑不使用默认范围,这可能会导致更多的麻烦。