2013-09-28 3 views
1

У меня есть метод поиска Active Rails 3 Active, и я пытаюсь обновить его до рельсов 4 patten.Rails 4 Active Finder метод

В Rails 3, мой код выглядел как этот

StripeEvent.setup do 
    subscribe 'customer.subscription.deleted' do |event| 
    user = User.find_by_customer_id(event.data.object.customer) 
    user.expire 
    end 
end 

В Rails 4, я попробовал это, этот кусок кода правильный?

StripeEvent.setup do 
    subscribe 'customer.subscription.deleted' do |event| 
    user = User.where(customer_id: (event.data.object.customer)) 
    user.expire 
    end 
end 

ответ

1

Это я не ясно, почему вы решили принести записи таким образом, когда вы можете сделать

user = User.find_by_customer_id(event.data.object.customer) 
+0

Так что рельсы 4 все еще поддерживают этот find_by_customer_id? – Benjamin

+0

Да, динамические искатели на основе атрибутов [http://api.rubyonrails.org/](http://api.rubyonrails.org/) по-прежнему поддерживаются. Вы можете использовать либо указанную мной форму, либо следующую User.find_by (customer_id: event.data.object.customer) –

+0

, пожалуйста, подумайте о принятии ответа, если вы его удовлетворены или запросите дополнительную информацию. –

-1

find_by_* устарела.

В Rails 4, пожалуйста, используйте find_by так:

User.find_by(customer_id: event.data.object.customer) 

Вы можете прочитать больше о Устаревшей Finders в этом большом блоге: What's new in Active Record [Rails 4 Countdown to 2013] | The Remarkable Labs Blog. Или ознакомьтесь с курсом CodeSchool's Rails 4: Zombie Outlaws.

+0

Это неверно. Единственными устаревшими искателями являются 'find_all_by _...' 'find_last_by _...' 'find_or_create_by _...' 'find_or_initialize_by _...' 'scoped_by _...' – Mike

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