Переопределение default_scope в проблеме (в Rails) - PullRequest
0 голосов
/ 22 мая 2018

Я бы хотел переопределить default_scope в модели, но я получаю это:

You tried to define a scope named "default_scope" on the model "Product", but Active Record already defined a class method with the same name.

module SoftDeletable
  extend ActiveSupport::Concern

  included do
    scope :default_scope, -> { where(deleted_at: nil) }
  end
end

Да, я знаю, что для этого есть драгоценные камни, но вопрос не об этом.
У вас есть идея, как я могу поставить default_scope в беспокойство?

Спасибо

1 Ответ

0 голосов
/ 22 мая 2018

Проблема на самом деле не связана с определением области действия как части проблемы.Вы увидите ту же ошибку, если попытаетесь определить область с именем default_scope из самой модели.

Чтобы установить область по умолчанию, используйте default_scope:

default_scope { where(deleted_at: nil) }

scope предназначен для создания собственной именованной области, например:

scope :non_deleted, -> { where(deleted_at: nil) }

позволит вам написать

`Model.non_deleted.where....`

, поэтому код в вашем вопросепытается создать область с именем default_scope, но, как показывает сообщение об ошибке, область действия Model.default_scope... будет конфликтовать с существующим методом default_scope, который используется для установки области действия по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...