«ArgumentError: Неизвестный ключ:: условия» для ассоциации has_many при обновлении с Rails 3 до Rails 4 - PullRequest
0 голосов
/ 24 октября 2018

Я мигрирую с Rails 3 на Rails 4, и следующие ассоциации из одной из моих моделей вызывают ошибку:

has_many :unblocked_items, class_name: 'IncidentItem', 
          conditions: [
            'incident_items.item_type_id in (?) \
              AND (incident_blocking_file_id IS NULL OR incident_blocking_files.way = ? \
            )', 
            IncidentItemType.blockable, 
            BlockingWay.unblock
          ],
          include: :incident_blocking_file
has_many :blocked_items, class_name: 'IncidentItem',
          conditions: [
            'incident_items.item_type_id in (?) \
              AND (incident_blocking_file_id IS NOT NULL \
              AND (incident_blocking_files.way <> ? OR incident_blocking_files.way IS NULL) \
            )', 
            IncidentItemType.blockable, 
            BlockingWay.unblock
          ],
          include: :incident_blocking_file

Я получаю следующую ошибку:

ArgumentError: Unknown key: :conditions. Valid keys are: :class_name, :anonymous_class, :foreign_key, :validate, :autosave, :table_name, :before_add, :after_add, :before_remove, :after_remove, :extend, :primary_key, :dependent, :as, :through, :source, :source_type, :inverse_of, :counter_cache, :join_table, :foreign_type (ArgumentError)

Что вызывает эту ошибку?Как я могу перенести эту модель и ее ассоциации с Rails 3 на Rails 4?

1 Ответ

0 голосов
/ 24 октября 2018

из: https://edgeguides.rubyonrails.org/association_basics.html#scopes-for-has-many

4.3.3 Области применения has_many

В некоторых случаях вы можете настроить запрос, используемый has_many.Такие настройки могут быть достигнуты с помощью блока области.Например:

class Author < ApplicationRecord
  has_many :books, -> { where processed: true }
end
...