5

Я начинаю обновление с Rails 4.1.4 до Rails 4.2.0. Это похоже на первое! больше не поддерживается в некоторых активных ассоциациях записи.«первый!» на AR CollectionProxy поднимает «undefined method [] для nil» после обновления с Rails 4.1.4 до 4.2.0

Что случилось с first! (в ActiveRecord :: Ассоциации: CollectionProxy), чтобы вызвать его сбой сейчас?

Как можно зафиксировать поведение так, как в 4.1.4?

Rails 4.1:

(byebug) user.organization.registration_codes 
#<ActiveRecord::Associations::CollectionProxy [#<RegistrationCode id: 259, code: "AWESOMESAUCE" ... >]> 

(byebug) user.organization.registration_codes.first! 
#<RegistrationCode id: 259, code: "AWESOMESAUCE" ... > 

Rails 4.2:

(byebug) user.organization.registration_codes 
#<ActiveRecord::Associations::CollectionProxy [#<RegistrationCode id: 259, code: "AWESOMESAUCE" ... >]> 

(byebug) user.organization.registration_codes.first! 
NoMethodError Exception: undefined method `[]' for nil:NilClass 
nil 

Обновлено

Порывшись в ActiveRecord, мне неудачу здесь:

def find_nth(index, offset) 
    if loaded? 
    @records[index] 
    else 
    offset += index 
    @offsets[offset] ||= find_nth_with_limit(offset, 1).first 
    end 
end 

loaded? возвращает true, но @records - это нуль. Выброс отладчика и вызов find_nth_with_limit(offset, 1).first возвращает запись, которую я ожидаю.

first! является defined in finder_methods.rb in active record вопрос, кажется, что ассоциация считает, что его загружены, но @records равна нулю

+0

первый! похоже, не устарели. – Doon

+0

где определяется «первым!»? AS Я не могу найти его ни в какой документации или источнике? – engineersmnky

+0

Он определен как часть активных поисковых устройств, как правило, больше не определяется на прокси-сервере te. – Doon

ответ

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