我有点被困,任何帮助或建议都会非常感激。
我想只显示有简历的用户,但我不确定如何 - 我的文件中有以下编码 - 您的建议&非常感谢帮助。
在我的user / index.html
中<% users.each do |user| %>
<%= user.resume.summary %>
<% end %>
模式
create_table "resumes", force: true do |t|
t.text "summary"
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
模型
user.rb
has_one :resume
resume.rb
belongs_to :user
我想进行仅显示有简历的用户的搜索。 我试过以下但没有运气
<% users.where(resume_id: !nil).each do |user| %>
<%= user.resume.summary %>
<% end %>
<% users.where("resume IS NOT NULL != ?", "").each do |user| %>
<%= user.resume.summary %>
<% end %>
我尝试写作作为范围,但没有运气
user.rb file
scope :users_with_resumes, -> {where(['resume != ?', nil])}
users/index.html.erb file
<% @users.users_with_resumes.each do |userj| %>
<%= user.resume.summary %>
<% end %>
答案 0 :(得分:2)
您已接近击中标记,但您尝试的语法略有偏差:
# This won't work because you're now searching for the value !nil (or 'true')
<% users.where(resume_id: !nil).each do |user| %>
<%= user.resume.summary %>
<% end %>
# This is a double negative, syntactically incorrect, and referencing resume instead of resume_id
<% users.where("resume IS NOT NULL != ?", "").each do |user| %>
<%= user.resume.summary %>
<% end %>
您应该使用以下其中一项:
users.where.not(resume_id: nil)
users.where("resume_id IS NOT NULL")
我认为你会发现这些陈述中的任何一个都能满足你的目的,无论是作用还是其他。
答案 1 :(得分:0)
以下代码仅显示具有简历的用户
协会
user has_one resume
resume belongs_to user
模式
create_table "resumes", force: true do |t|
t.text "summary"
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
user.rb
scope :users_with_resumes, -> {where("id in (select user_id from resumes)")}
or instead of a scope you can write a method
def self.users_with_resumes
where("id in (select user_id from resumes)")
end
users / index.html.erb [仅显示具有简历的用户]
<% @users.users_with_resumes.each do |user| %>
<%= user.resume.summary %>
<% end %>