ActiveRecord:根据URL中的一个字段检索mySQL数据

时间:2015-10-05 04:40:38

标签: mysql ruby sinatra sequel

我有一个名为“博客”的模型,它有几列,包括一个名为“令牌”的列。

我想根据网址中的令牌检索一行 - 例如,如果用户转到/blog/post1,我想要检索token = post1

所在的行

在我的应用设置中,我正在做:

get '/blog/:id' do
  @postID = params[:id]
  @thePost = Blog.where(token: @postID)
  render 'blog/index'
end

当我尝试访问.erb文件中的<%= @thePost %>时,我得到:

#<Sequel::Mysql2::Dataset:0x007fdec1777318>

如何从这里的行访问实际数据?

2 个答案:

答案 0 :(得分:2)

您正在返回一个关系,您想要返回的是一个实际记录。为此,请在first来电结束时使用where

Blog.where(token: @postID).first

答案 1 :(得分:1)

Blog.where(token: @postID)返回包含所有匹配项的列表 - 即使列表只包含一个元素。 OP正在使用Sequel ORM而不是ActiveRecord(提示是返回类型Sequel::Mysql2::Dataset),因此我建议使用first(或first!取决于你的用例)而不是where

@thePost = Blog.first(token: @postID)

来自文档:

  

首先在模型的数据集上调用的别名,但优化了对单个参数的处理。