我目前正在使用设计工作一个rails项目,我遇到了一些问题。
我有默认设计:使用我的用户模型运行安装,我有另一个名为Profile的模型。它是belongs_to :user
,用户是has_one :profile
。
我遇到的问题是,我要求用户拥有用户名,因此必须在注册时完成;所以这通过设计传递到users表。但是我需要使用用户配置文件URL的用户名,这意味着使用“个人档案”视图与“用户”表格中的属性进行交叉。
在我使用的用户模型中:after_create :build_profile
为该用户构建配置文件。这会在配置文件表中创建一个包含first_name
和last_name
等的配置文件。
因此,使用'friendly_id'gem我可以链接到'profiles / index'页面中的属性到用户配置文件。问题是我只能使用已传递到配置文件表中的内容,例如first_name
或last_name
我无法链接到:username
,因为它位于Users表中,而不是个人资料表。
在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并不好,因为它不是唯一的。
答案 0 :(得分:1)
您是否考虑过使用嵌套路线?在您的routes.rb文件中,您可以:
resources :users do
resources :profiles
end
这样,您就可以使用类似<%= link_to user_profile_path(@profile.user, @profile), @profile %>