我目前正在使用devise从事Rails项目,但遇到了一个问题。
我有默认的devise:install和User模型一起运行,还有另一个模型称为Profile。它belongs_to :user
和用户has_one :profile
。
我的问题是,我要求用户具有用户名,因此必须在注册时完成;因此,这是通过devise传递到users表中的。但是我需要使用用户名作为用户个人资料网址,这意味着将用户表中的属性与个人资料视图交叉。
在用户模型中,我正在使用:after_create :build_profile
为该用户构建配置文件。这将创建一个配置文件first_name
和last_name
等成型材表。
因此,使用“ friendly_id” gem,我可以从“个人资料/索引”页面链接到用户个人资料的属性。问题是我只能使用已传递到个人档案表中的内容,例如,first_name
或者last_name
我无法链接到:username
用户表中的内容,而不能链接到个人档案表中。
在profile_model.rb文件中,此刻我正在使用:
extend FriendlyId
friendly_id :first_name
在我使用的profiles / index.html.erb文件中:
<% @profiles.each do |profile| %>
<p><%= link_to profile.user.username, profile %></p>
<% end %>
这适用于制作诸如/ profiles / John之类的URL,但是John不好,因为它不是唯一的。
您是否考虑过使用嵌套路线?在routes.rb文件中,您可以:
resources :users do
resources :profiles
end
这样,您就可以使用类似 <%= link_to user_profile_path(@profile.user, @profile), @profile %>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句