所以我有一个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不太确定在这里采取什么最实用的方法。
谢谢,
迈克尔。