带有default_scope的rails 3.2.12中的ActiveModel :: MissingAttributeError

时间:2013-03-18 01:29:43

标签: ruby-on-rails ruby-on-rails-3 default-scope

我们希望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是否是一个正确的工具来实现这一目标?感谢。

0 个答案:

没有答案