[英]Rails Nested Attributes for a Model not directly associated
我正在構建一個功能,幾個模型(3+)將具有與之關聯的圖像或文檔。 為了減少重復的代碼,我創建了一個單獨的模型MediaUploads
,它belongs_to :user
MediaUploads
belongs_to :user
導致用戶has_many :media_uploads
。
MediaUploads
表將用戶ID與文件信息一起存儲,而其他任何模型都沒有。 因此,每個需要圖像的模型在其數據庫表t.integer "media_uploads_id
一個has_one :media_upload
關聯和一個參考列。我認為這是實現此目標的合適方法,但是我遇到了一些問題。
如果用戶正在管理其媒體,則上述設置可以正常工作,但是我正在努力使用嵌套表單來完成此工作。 一個例子, Post
這可能需要MediaUpload
可能是這樣的:
如果我使用byebug並獲取params
現在accepts_nested_attributes_for :media_upload
我可以看到包含的文件詳細信息ActionController::Parameters {"media_uploads"=>{"filename"=>#<...
但使用post_params
可以看到它是不允許。 我已將其添加到如下所示的強參數中: ...post attributes..., media_upload_attributes: [ :filename ]
-我也嘗試過media_upload和media_uploads。
我的Google搜索使我重新回到將new
方法更改為類似方法:
@post = Post.new @post.build_media_upload
這給我unknown attribute 'post_id' for MediaUpload.
的錯誤unknown attribute 'post_id' for MediaUpload.
-大概是因為build
需要從用戶那里進行,因此考慮到MediaUpload
引用了user_id
有人能給我一些指導嗎?
更新
這是我目前無法正常工作的內容:
在我的Post.rb中,我有以下內容
has_one :media_upload
accepts_nested_attributes_for :media_upload
在我的_form.html.erb中,
<%= f.fields_for :media_uploads do |h| %>
<%= h.file_field :filename, class:"btn-file" %>
<% end %>
在我的控制器中
..post params..., media_uploads_attributes: [ :filename ])
使用終端命令時我可以看到數據params
然而post_params
狀態以下: Unpermitted parameter: media_uploads
在強參數中應為復數形式,因為Rails會查看數據庫表,而不是模型和數據庫表均以復數形式命名。
所以結果應該是:
...post attributes..., media_uploads_attributes: [ :filename ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.