【发布时间】:2013-06-02 15:12:55
【问题描述】:
我已经开始使用 ActiveRecord 来访问我的数据库,它非常有用。但是,访问ActiveRecord::Relation 对象内的数据似乎是一个挑战。我使用以下方式查询我的数据库:
post '/login' do
session.clear
r = User.where(:username => params["user"], :password => Digest::MD5.hexdigest(params["pass"]))
if r.count == 1
session[:user] = r
session[:user].delete(:password)
status 200
else
status 401
end
end
在返回数据后,Ruby 会检查以确保只有一行,如果有,则将 r 对象的内容设置为哈希 session[:user]。然后,理想情况下,它应该从session[:user] 对象中删除密码数据,以便它只提供识别用户的详细信息。但是,使用此代码,我得到错误:wrong number of arguments (1 for 0) 指向.delete 行。那么,我怎样才能从这个对象中删除密码数据,或者将其转换为哈希,因为我知道我可以删除哈希格式的密码。
【问题讨论】:
-
你可以使用 User.select('row1,row1').where(:username)...而不是删除属性。
标签: ruby activerecord sinatra