所以我有一個Entry
模型與一列名爲created_by
,我想默認爲第一User
誰創造的條目。我安裝了審計,並在我的Entry
模型我有:審覈:未定義方法`關聯'爲零:NilClass
belongs_to :user
audited :associated_with => :user
在我
User
模型
同樣地,我有如下語句:
has_many :entries
has_associated_audits
在我的條目形式,我試圖創建其中hidden_field
我試圖將created_by
設置爲與條目上第一次審覈的關聯用戶相同。在我設定的entries_controller
.field
= f.label :created_by
%br
= f.hidden_field :created_by, value: @entry.audits.first.associated
這裏是代碼:但是我得到這個錯誤,當我嘗試加載表格視圖:
undefined method `associated' for nil:NilClass
這裏在視圖代碼@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事件創建 新的審計,S因爲它還沒有被保存。我在控制器的create
方法中調用@entry.save
之後應該設置值@entry.created_by
嗎?不確定採取什麼最實用的方法。
謝謝,
Micha'el。
@Damien我認爲@ entry.audits總是爲零,如果@entry = Entry.new並且尚未保存。這讓我想知道在創建'@ entry'的時候如何設置'created_by'字段的最佳位置,我想我可以用'if @ entry.audits'封裝'hidden_field'的東西,在這種情況下我可以,假設條目已經被創建,設置'created_by'的值爲我想要的。 – Thalatta
@Damien雖然看起來有點不習慣。 – Thalatta
我同意你不應該在'@ entry.save'之前在表單中設置'created_by'屬性,在控制器中設置它。沒有必要保存條目來獲取用戶,您應該通過'current_user'知道用戶是誰。您可以添加回調驗證以確保是這種情況。 –