繁体   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