如何在rails中向活动记录对象添加标志

时间:2014-05-18 07:28:20

标签: ruby-on-rails

假设我有一个像这样的对象

@contacts = Contact.first(5)

联系表有4列,name,id,created_at,updated_at

现在我想为每个对象添加一个标志,用于名称和联系人ID,如

@contacts.each do |contact| 
  contact.add(name_flag) = true  if {my condition here}
end

并且在视图中我想根据标志

输出联系人
 <% @contacts.each do |contact| %>
    <%=  contact.['name'] if contact.[name_flag'] %>
    <% end %>

2 个答案:

答案 0 :(得分:0)

在控制器中: -

con = Contact.first(5)
@contacts = []
con.each do |contact| 
  if my_condition_here
   contact['name_flag'] = true
  end 
  @contacts << contact
end

在视图中: -

<% @contacts.each do |contact| %>
   <%=  contact.name if contact['name_flag']  %>
<% end %>

答案 1 :(得分:0)

如果您的条件不是太复杂,那么将它放在您的视图中就没问题了:

<% @contacts.each do |contact| %>
  <%= contact.name if {your condition here} %>
<% end %>

编辑:

如果要将此条件移动到模型中,只需在Contact模型上定义一个方法:

def name_flag
  {your condition here}
end

然后你可以在你的观点中调用它:

<% @contacts.each do |contact| %>
  <%= contact.name if contact.name_flag %>
<% end %>