Ruby on rails 如何从Rails 5应用程序中的表中的特定属性列表中获取nil和not nil值的计数?
Rails 5应用程序,用户模型用Desive建立 我有一个使用Desive gem创建的用户模型。我想得到模型中特定列的计数,这些列是零,也不是零。例如,我使用它来获取所有列的计数: 无: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
非零:
但是,我只想找到某些属性的计数。我只想要
- 名字
- 赛尔
- 城市
- 陈述
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查询时是否感到舒适?我很肯定你能做得更好。