我有一個問題在rails中,我有兩個模型(訂單和狀態)之間基本的多對多關係。這些模型如下所示:「未定義的方法`名稱爲零:NilClass」創建新實例時
class Order < ActiveRecord::Base
has_many :products, :through => :lines
has_and_belongs_to_many :statuses
default_scope order("#{table_name}.created_at desc")
end
和
class Status < ActiveRecord::Base
has_and_belongs_to_many :orders
end
在訂單我的索引視圖,我卻顯示訂單的最新狀態,所以order.statuses.last.name,當我創建新的訂單時,我收到一個錯誤。此錯誤是針對未定義的方法名稱的,因爲新訂單在第一次創建時沒有任何關係。
我的問題是,有沒有辦法在保存新訂單之前初始化兩個模型之間的關係?我希望我的訂單始終至少在我的狀態集合中具有第一個狀態,但不希望在保存前不得不手動檢查它。
誤差爲好措施是:
undefined method `name' for nil:NilClass
此行中我的觀點:
<td><%= order.statuses.last.name %></td>
感謝所有。
好吧,爲了初始化`statuses`你要麼必須對它進行硬編碼,要麼打到數據庫。那麼爲什麼不保存然後繼續呢?除非您緩存狀態數組並以這種方式初始化您的訂單。 – Jeremy 2010-11-22 17:57:45