我们希望default_scope
灵活地使用页面上显示的列customer index
。例如,如果用户不应该看到 customer phone#
,那么我们从页面中删除phone
并default_scope
希望在页面上保留phone
空白。index
我们从网上得到了这个想法,正在做一个测试。missing attribute:phone
但是选择时有错误phone
。这是我们default_scope
在customer
模型中的定义:
def self.default_scope
Customer.scoped.select("active,name,sales_id,customer_status_category_id, short_name, zone_id, id, since_date")
end
索引页面:
<table>
<tr>
<th>#</th>
<th>ShortName</th>
<th>SinceDate</th>
<th>Phone</th>
<th>Active?</th>
<th>CustomerStatusCategory</th>
<th>Sales</th>
<th>LastContactDate</th>
</tr>
<% @customers.each do |cust| %>
<tr>
<td><%= cust.id %></td>
<td><%= cust.short_name %></td>
<td><%= cust.since_date.strftime("%Y/%m/%d") %></td>
<td><%= cust.phone if cust.phone.present? %></td>
<td><%= cust.active %></td>
<td><%= cust.customer_status_category.name %></td>
<td><%= cust.sales.name %></td>
<td><%= return_last_contact_date(cust.id).strftime("%Y/%m/%d") %></td>
</tr>
<% end %>
</table>
错误是:
ActiveModel::MissingAttributeError in Customerx/customers#index
Showing C:/D/code/rails_proj/engines/customerx/app/views/customerx/customers/_index_partial.html.erb where line #32 raised:
missing attribute: phone
是否可以通过故意不在index
(或任何视图页面)中选择它来显示一个空列?如果可能,是否default_scope
有合适的工具来实现这一目标?谢谢。