簡體   English   中英

未直接關聯的模型的Rails嵌套屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM