Я начинаю обновление с 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 равна нулю
первый! похоже, не устарели. – Doon
где определяется «первым!»? AS Я не могу найти его ни в какой документации или источнике? – engineersmnky
Он определен как часть активных поисковых устройств, как правило, больше не определяется на прокси-сервере te. – Doon