我正在读一本用Sinatra制作Twitter克隆的书,以提高我对Ruby的了解。我对作者使用
感到困惑User.first(:nickname => params[:recipient])
他在整个代码中的几个位置使用,如下例所示。
post '/message/send' do
recipient = User.first(:nickname => params[:recipient])
Status.create(:text => params[:message], :user => User.
get(session[:userid]), :recipient => recipient)
redirect '/messages/sent'
end
添加到此方法的'第一'究竟是什么?例如,它是否正在搜索作为参数传入的昵称的第一个用户:收件人?换句话说,它是否等同于'find'?
我应该补充说,它也让我感到困惑,因为昵称应该是独一无二的,所以没有理由为什么它需要搜索'first',如果它确实是它正在做的那样。
更新
作者正在使用DataMapper进行ORM
答案 0 :(得分:1)
好的,'first'是一个'找到'的数据映射器方法。来自文档
zoo = Zoo.first(:name => 'Metro') # first matching record with the name 'Metro'