Ruby on rails 如何从Rails 5应用程序中的表中的特定属性列表中获取nil和not nil值的计数?

Ruby on rails 如何从Rails 5应用程序中的表中的特定属性列表中获取nil和not nil值的计数?,ruby-on-rails,ruby,attributes,Ruby On Rails,Ruby,Attributes,Rails 5应用程序,用户模型用Desive建立 我有一个使用Desive gem创建的用户模型。我想得到模型中特定列的计数,这些列是零,也不是零。例如,我使用它来获取所有列的计数: 无: 非零: 但是,我只想找到某些属性的计数。我只想要 名字 赛尔 城市 陈述 如果我创建这样一个模型方法 def profile_attributes [:name, :cel, :city, :state] end 那么在我看来, =志愿者.个人资料\u属性.计数=>4 现在,如果city和sta

Rails 5应用程序,用户模型用Desive建立

我有一个使用Desive gem创建的用户模型。我想得到模型中特定列的计数,这些列是零,也不是零。例如,我使用它来获取所有列的计数:

无:

非零:

但是,我只想找到某些属性的计数。我只想要

  • 名字
  • 赛尔
  • 城市
  • 陈述
如果我创建这样一个模型方法

def profile_attributes
  [:name, :cel, :city, :state]
end 
那么在我看来,
=志愿者.个人资料\u属性.计数
=>4

现在,如果
city
state
nil
我想要=>2


如果我正确理解了这个问题,那么我该如何让它工作呢?

假设一个
志愿者作为
用户
对象具有
profile\u属性
方法:

#不是零
(志愿者.profile_attributes.select{| attr |!志愿者.send(attr).nil?}).count
#零
(志愿者.profile_attributes.select{attr}志愿者.send(attr.nil?}).count

这其实很明显。我可能没有很好地解释这个问题。这样做的方法就是添加select。因此,您将拥有以下内容:

<% User.select(:name, :cel, :city, :state).each do |user| %>
  Nil count
  <%= user.attributes.values.count { |v| v.nil? } %>

  Not nil count
  <%= user.attributes.values.count { |v| !v.nil? } %>
<% end %>

零计数
非零计数

你说得对。我的打字错误。你在使用什么数据库?你在视图中进行SQL查询时是否感到舒适?我很肯定你能做得更好。