创建具有一对多关系的FriendlyId

时间:2014-12-08 20:39:57

标签: ruby-on-rails ruby url methods friendly-id

我的User模型与has_many模型有Post关系。

Class User < ActiveRecord::Base
  has_many :posts
end

Class Post < ActiveRecord::Base
  attr_accessor :user_id

  belongs_to :user
end

我想设置我的帖子模型的网址,其中首先是帖子所有者的名字,然后是帖子的名称:

localhost:3000/john/sample-post

我尝试在我的帖子模型中的slug_candidates方法中进行设置,但出现了错误:

Class Post < ActiveRecord::Base
  ...
  extend FriendlyId
  friendly_id :slug_candidates, user: [:slugged, :history]

  def slug_candidates
    [:name, [self.user.name, :name]]
  end
end

我需要在此方法中更改哪些内容才能使其正常工作?

1 个答案:

答案 0 :(得分:1)

docs通过以下示例解释:

  

您也可以使用命名参数为路由添加前缀:

scope ':username' do
  resources :posts
end
     

这将为您提供诸如/ bob / posts / 1之类的URL,并允许您在控制器,帮助程序和视图中将路径的用户名部分引用为params[:username]