我想使用以下命令将数据记录在数据库中
Profile.find_or_create(fname: contact.FirstName, lname: contact.LastName,
company: account.Name, title: contact.Title, user_id: contact.CreatedById,
account_id: account.Id, contact_id: contact.Id, type: "contact" )
其中Profile
是activerecord model
但我收到了以下错误
undefined method find_or_create for Profile class
Profile.public_methods
未显示find_or_create
方法,但Activerecord Api
定义了上述方法。
可能出现什么问题?
答案 0 :(得分:10)
其find_or_create_by
及其在Rails 3中已弃用。
使用@foo = Foo.find_by_bar("baz") || Foo.create(:bar => "baz")
答案 1 :(得分:3)
根据Rails 4 docs
使用:
User.find_or_create_by(first_name: 'Joe')
而不是:
User.find_or_create_by_first_name('Joe')
答案 2 :(得分:1)
My Rails版
Rails -v
Rails 3.1.3
我的Ruby版本
Ruby -v
ruby 1.9.2p290
在Rails控制台中,我可以使用
find_or_create_by method like below
1.9.2-p290 :001 > User.find_or_create_by_name("soundar")
User Load (0.8ms) SELECT `users`.* FROM `users` WHERE `users`.`name` = 'soundar' LIMIT 1
=> #<User id: 1, name: "soundar", age: 23, created_at: "2012-04-17 11:12:43", updated_at: "2012-04-17 11:12:43">