如果使用u = User.where(:user =>“ andrata”)来获取u.user,为什么会出现结果错误
使用u = User.find(1)
irb(main):073:0> u = User.find(1)
User Load (1.0ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT
1
=> #<User id: 1, user: "andrata", name: "andrata lack", password_digest: "$2a$10
$yCZVO7Sxcz4yErBmLozAPOYupg0BAG9wxBjWF6eGPOj...", created_at: "2015-08-28 13:52:
28", updated_at: "2015-08-28 14:37:35">
irb(main):074:0> u.user
=> "andrata"
使用u = User.find_by_user(“ andrata”)
irb(main):079:0> u = User.find_by_user("andrata")
User Load (2.0ms) SELECT `users`.* FROM `users` WHERE `users`.`user` = 'andr
ata' LIMIT 1
=> #<User id: 1, user: "andrata", name: "andrata lack", password_digest: "$2a$10
$yCZVO7Sxcz4yErBmLozAPOYupg0BAG9wxBjWF6eGPOj...", created_at: "2015-08-28 13:52:
28", updated_at: "2015-08-28 14:37:35">
irb(main):080:0> u.user
=> "andrata"
使用u = User.where(:user =>“ andrata”)
irb(main):077:0> u = User.where(:user =>"andrata")
User Load (1.0ms) SELECT `users`.* FROM `users` WHERE `users`.`user` = 'andra
ta'
=> #<ActiveRecord::Relation [#<User id: 1, user: "andrata", name: "andrata lack"
, password_digest: "$2a$10$yCZVO7Sxcz4yErBmLozAPOYupg0BAG9wxBjWF6eGPOj...", crea
ted_at: "2015-08-28 13:52:28", updated_at: "2015-08-28 14:37:35">]>
irb(main):078:0> u.user #####<-- why i get result error for this #######
NoMethodError: undefined method `user' for #<User::ActiveRecord_Relation:0x5de82
78>
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/activerecord-4.2.3/lib/active_r
ecord/relation/delegation.rb:136:in `method_missing'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/activerecord-4.2.3/lib/active_r
ecord/relation/delegation.rb:99:in `method_missing'
from (irb):78
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.2.3/lib/rails/comman
ds/console.rb:110:in `start'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.2.3/lib/rails/comman
ds/console.rb:9:in `start'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.2.3/lib/rails/comman
ds/commands_tasks.rb:68:in `console'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.2.3/lib/rails/comman
ds/commands_tasks.rb:39:in `run_command!'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.2.3/lib/rails/comman
ds.rb:17:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
谢谢
.find()
并.find_by_xxx()
在.where()
返回不是用户实例的ActiveRecord Relation时给您一个用户实例。如果要从where()
结果中获取用户实例,可以采用以下方式:
User.where(:user =>"andrata").first
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句