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