2つのモデル(注文とステータス)の基本的な多対多の関係があります。これらのモデルには、次のようになります。"新しいインスタンスを作成するときに` name 'for nil: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よ新しい注文を作成すると、エラーが発生します。このエラーは、未定義のメソッド名であり、新しいオーダーは最初に作成されたときに関係がないためです。
私の質問は、新しい注文を保存する前に、私の2つのモデル間の関係を初期化する方法はありますか?私は自分の注文が常に少なくとも自分のステータスコレクションの最初のステータスを持つことを望むが、保存する前に手動でチェックする必要はない。良い対策のための
エラーがある:私の見解では、この行の
undefined method `name' for nil:NilClass
:すべて
<td><%= order.statuses.last.name %></td>
感謝。
まあ、 'statuses'を初期化するために、あなたはそれをハードコードするか、データベースにヒットする必要があります。それでは保存してから移動してみませんか?ステータスの配列をキャッシュして、そのように注文を初期化しない限り。 – Jeremy