2013-06-25 6 views
0

Неясно мне, почему это не работает:Почему я не могу использовать create_or_update?

class FastGrowers < ActiveRecord::Base 
end 
FastGrowers.create_or_update(:id => t.id, :ticker => ticker, :five_year_growth_rate => growth_rate) 

Я получаю это в результате:

/var/lib/gems/1.9.1/gems/activerecord-3.2.13/lib/active_record/dynamic_matchers.rb:55:in `method_missing': undefined method `create_or_update' for #<Class:0x8aaa264> (NoMethodError) 

что дает?

ответ

3

Это не работает, потому что этот метод не предоставляется ActiveRecord.

Возможно, вы хотите FastGrowers.find_or_create_by_id?

grower = FastGrowers.find_or_create_by_id(t.id) 
grower.update_attributes(:ticker => ticker, :five_year_growth_rate => growth_rate) 

Но если у вас есть id, вы должны знать, если у вас есть запись, верно? Трудно сказать, что вы пытаетесь сделать, но что-то есть подозрительное.

+1

это не так? http://apidock.com/rails/ActiveRecord/Base/create_or_update – oldergod

+0

Да, это немного подозрительно. Я хочу, чтобы это работало первым (когда таблица пуста) и каждый последующий раз. Кроме того, да, я думал, что это часть активной записи. – Ramy

+0

@Ramy правда там! – oldergod