したがって、エントリを作成した最初の人にデフォルト設定したいEntryという列を持つモデルがあります。監査済みをインストールしましたが、モデルには次のものがあります。created_byUserEntry
belongs_to :user
audited :associated_with => :user
同様に、私のUserモデルには次のステートメントがあります。
has_many :entries
has_associated_audits
私のエントリーフォームで、エントリーの最初の監査の関連ユーザーと等しくなるようhidden_fieldに設定しようとしていたを作成しようとしていました。created_byただし、フォーム ビューを読み込もうとすると、次のエラーが発生します。
undefined method `associated' for nil:NilClass
ビュー内のコードは次のとおりです。
.field
= f.label :created_by
%br
= f.hidden_field :created_by, value: @entry.audits.first.associated
ビューでentries_controller設定したコードは次のとおりです。@entry
def new
@entry = Entry.new
authorize! :create, @entry
@project = Project.find(params[:project_id])
@entry.project_id = @project.id
authorize! :update, :read, @project
end
直観的には、まだ保存されていないため、新しい監査を作成する場合に @entry.audits を呼び出すのはあまり意味がありません。コントローラーのメソッドで@entry.created_by呼び出した後に値を設定する必要がありますか? ここで取るべき最も実用的なアプローチが何であるかについてはよくわかりません。@entry.savecreate
ありがとう、
マイケル。