在Ruby on Rails上使用除属性之外的Object属性循环

时间:2012-10-18 17:41:12

标签: ruby-on-rails ruby ruby-on-rails-3 loops

我可以通过以下方式获取对象属性:

Class Object
 field :name
 field :email
 field :second_name
end

有了这个循环:

<% @object.attributes.each do |attr_name| %>
....
<% end %>

如果我有3个属性,我会获得3个属性。

我只想获得attr_name nameemail属性

我如何在此循环中放弃或排除field :second_name

谢谢

3 个答案:

答案 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) }