ruby on rails - Can't use `find_by` method while `where` works in ActiveRecord::Base -



ruby on rails - Can't use `find_by` method while `where` works in ActiveRecord::Base -

i have method this, works fine.

class user < activerecord::base def self.find_or_create_from_twitter_id(twitter_id) user = where(twitter_id: twitter_id).first user ||= create_from_twitter_id(twitter_id) end end

then changed where(...).first find_by, because thought 2 look same.

def self.find_or_create_from_twitter_id(twitter_id) user = find_by(twitter_id: twitter_id) user ||= create_from_twitter_id(twitter_id) end

but undefined method `find_by' #<class:0x007fbb2b674970> error when seek create user.

i have no thought why find_by doesn't work here. i'll grateful if tell me wrong.

find_by method introduced in rails 4. if you're using rails 3.x or lesser version use: find_by_<attribute_name> instead:

find_by_twitter_id(twitter_id)

but, there's method find , create attributes passed it, can utilize if fits needs:

find_or_create_by_twitter_id(twitter_id)

ruby-on-rails activerecord

Comments

Popular posts from this blog

formatting - SAS SQL Datepart function returning odd values -

c++ - Apple Mach-O Linker Error(Duplicate Symbols For Architecture armv7) -

php - Yii 2: Unable to find a class into the extension 'yii2-admin' -