Rails 5 应用程序,用户模型使用 Devise 设置
的我有一个使用 Devise gem 创建的用户模型。我想获取模型中特定列的计数,这些列为 nil 且也不为 nil。例如,我使用它来获取所有列的计数:
无:<%= user.attributes.values.count { |v| v.nil? } %>
不无:<%= user.attributes.values.count { |v| !v.nil? } %>
但是,我只想找到某些属性的计数。我只想要
- 名字
- 赛尔
- 城市
- 州
如果我创建这样的模型方法
def profile_attributes
[:name, :cel, :city, :state]
end
那么在我看来:= volunteer.profile_attributes.count
=> 4
现在,如果city
和state
nil
我会想要=>2
我如何让它工作?
如果我正确理解了这个问题,给定一个volunteer
作为具有profile_attributes
方法User
对象:
# not nil
(volunteer.profile_attributes.select { |attr| !volunteer.send(attr).nil? }).count
# nil
(volunteer.profile_attributes.select { |attr| volunteer.send(attr).nil? }).count
这其实很明显。我可能没有很好地解释这个问题。执行此操作的方法只是添加选择。因此,您将拥有以下内容:
<% 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 %>