したがって、エントリを作成した最初の人にデフォルト設定したいEntry
という列を持つモデルがあります。監査済みをインストールしましたが、モデルには次のものがあります。created_by
User
Entry
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.save
create
ありがとう、
マイケル。