0

Выпуска на железнодорожном 4.2.6 при обновлении с rails4.1.9 до 4.2.6 =>Проблемы с размахом в то время как обновление в rails4.2.6 от 4.1.9

Я пытаюсь найти те записи из таблицы, в которой идентификатор совпадает с parent_id. Так что я написал объем

scope :parent_record, ->{ where(parent_id: self[:id]) } 

Когда я использую эту область и вычисление

self.all.parent_record 

возвращает "# ActiveRecord::Relation []>"

В то время как в рельсах 4.1.9 возвращается -

#ActiveRecord::Relation [#Category id: 6, name: "Business Disruption", description: "", parent_id: 6, status: "a", target_risk: nil, lock_target_risk: false]. 

Рубиновая версия - ruby-2.0.0-p598

Где я ошибаюсь?

+0

Вы можете попробовать 'Область применения: parent_record, -> {где (parent_id: self.id)}' –

+0

уже попробовал и выбросил ошибку - *** NoMethodError Exception: undefined method 'id 'для #

ответ

0

Я действительно удивлен, что это сработало в Rails 4.1.9. Потому что self вернет класс, а не отдельный экземпляр в контексте области. Поэтому self[:id] на самом деле не имеет смысла.

Я хотел бы написать что-то вроде этого, чтобы найти все записи, которые parent_id соответствует их собственному id:

scope :own_parent, -> { where('id = parent_id') } 
+0

Я сделал это уже как scope: parent_record, -> {where (" # {table_name} .id = # {table_name } .parent_id "])} –

Смежные вопросы