我可以通过以下方式获取对象属性:
Class Object
field :name
field :email
field :second_name
end
有了这个循环:
<% @object.attributes.each do |attr_name| %>
....
<% end %>
如果我有3个属性,我会获得3个属性。
我只想获得attr_name
name
和email
属性
我如何在此循环中放弃或排除field :second_name
谢谢
答案 0 :(得分:2)
您可以在循环中添加条件,如下所示:
@object.attributes.each do |attr_name|
unless attr_name.eql?('second_name')
# Do stuff here
end
end
答案 1 :(得分:2)
目前尚不清楚包含或排除特定属性的标准是什么。
如果您想要黑名单:
(@object.attributes - [:second_name]).each{ ... }
# Alternatively:
@object.attributes.reject{ |n| n==:second_name }.each{ ... }
如果您想要白名单:
(@object.attributes & [:name, :email, :socks]).each{ ... }
答案 2 :(得分:0)
黑名单:
exclude = [:a, :b, :c]
@object.attributes.reject { |k,v| only.include?(k.to_sym) }
白名单:
only = [:a, :b, :c]
@object.attributes.select { |k,v| only.include?(k.to_sym) }