我被卡住了。
我目前正在尝试在数据库用户中打印出 fullname 列。
我有像这样连接的数据库。
4个型号。公司,申请,答案,用户。
公司创建了一个可由用户回答的应用程序。
company.rb
has_many :applications
has_many :answers, through: :applications
application.rb
belongs_to :company
has_many :answers
answer.rb
belongs_to :application
has_many :users
user.rb
has_many :answers
公司创建了一组问题,这些问题存储在应用程序中。用户可以查看这些问题并回答它们。答案存储在答案中。当他们回答时,我将他们的user_id存储在answer.rb中。
我要做的是向公司展示哪位用户回答了他们的问题。我已经能够打印出他们的user_id,但不能打印出他们的.fullname。
这是我目前的设置:
<h1>People who've applied to your startup</h1>
<% @applications.all.each do |application| %>
<% application.answers.each do |answer| %>
<p>Your question1: <%= answer.application.question_1 %></p>
<p>Their answer 1: <%= answer.answer_1 %></p>
<p>Your question 2: <%= answer.application.question_2 %></p>
<p>Their answer 3: <%= answer.answer_2 %></p>
<p>Your question 3: <%= answer.application.question_3 %></p>
<p>Their answer 3: <%= answer.answer_3 %></p>
<i>Answered by user: <%= answer.user_id %></i>
<hr>
这会成功打印出他们的user_id。但是我想更进一步,并获得他们的全名。那我该怎么做?他们的全名存储在user.rb模型中。
答案 0 :(得分:2)
我认为更好的答案是:
class Answer < ActiveRecord::Base
belongs_to :application
belongs_to :user #here
delegate :fullname, to: 'user', allow_nil: true, (optional) prefix: 'user'
end
现在你可以做到
<%=answer.fullname%> or if you add the optional part <%=answer.user_fullname%>
如果你这样做,请阅读更多内容 delegate
前缀不必称为“用户”
delegate :fullname, to: 'user', allow_nil: true, prefix: 'any_name'
<%= answer.any_name_fullname%>
答案 1 :(得分:0)
首先, Relation
和 User
之间的 Answer
似乎有误。你是应该在 belongs_to :user
模型中 Answer
而不是 has_many :users
。
#answer.rb
Class Answer < ActiveRecord::Base
belongs_to :application
belongs_to :user #here
end
其次,通过这样做,你可以这样做
<%= answer.user.fullname %>
获取 user's fullname
的关联 answer
。
您还应该查看这些 Guides 以获取更多信息。