我们希望default_scope
能够灵活使用customer index
页面上显示的列。例如,如果用户不应该看到客户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
是否是一个正确的工具来实现这一目标?感谢。