根据保存在数据库

时间:2017-05-02 15:22:58

标签: ruby-on-rails

我正在设置基于this answer的共享链接,用户可以根据需要创建尽可能多的共享链接(并单独撤销)。

生成令牌,然后将其保存到一个表格中,该表格包含相关的user_idlink(link =令牌)和note,用户可以输入该表来记住谁/什么他们通过此链接授权。所有这些链接都转到同一个用户页面(即内容不会改变,但您应该能够通过删除其令牌来撤销特定人员对该页面的访问权限。)

查找关联内容的常用路线是users/:id/profile。如何设置路由以获取令牌值并映射到正确的地址。如果公共链接没有公开用户ID号(例如链接将转到users/profile/:link

,那就太棒了

如果生成的链接很有用,那么这是生成链接的模式

create_table "sharings", force: :cascade do |t|
  t.string   "link"
  t.text     "note"
  t.integer  "user_id"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.index ["user_id"], name: "index_sharings_on_user_id"
end

修改

所以我试图设置它的方式是,可以有多个:link映射到同一个地方。我理解上面连接的答案的方式是它只会将一个:token映射到一个id。为此,我希望用户能够创建多个链接(由user_id绑定在一起)。

我在想这样的事,但我收到错误undefined method user_id for #<ActiveRecord::Relation []>

路线(第一个工作,它是我想要映射第二个的路径)

get 'users/:id/profile', to: 'users#profile', as: :profile
get 'users/profile/:link', to: 'sharings#shared_profile', as: :shared_profile

控制器动作(我不知道渲染是否是正确的显示方式,但我想显示页面而不是重定向到具有用户ID的地址)

def shared_profile
  @link = Sharing.where(link: :link)
  @user_id = @link.find(user_id)
  render profile_path(@user_id)
end

编辑2

这就是我的想法。也有可能有更好的方法来设置它,而不是我做的。

enter image description here

0 个答案:

没有答案