模型/视频
class Video < ApplicationRecord
has_one :category, through: :video_category
has_one :video_category
end
模型/分类
class Category < ApplicationRecord
has_many :video_categories
has_many :videos, through: :video_categories
end
一个视频只能包含一个类别,但一个类别包含多个视频。
我让用户发布视频链接,让他们为每个视频选择最佳类别。我在管理员中创建了一些类别,他们只能使用我创建的类别。
视图/视频/新
<%= simple_form_for @new_video do |f| %>
<%= f.input :title %>
<%= f.input :description, as: :text %>
<%= f.input :category,
as: :select,
label: "Category" %>
<%= f.button :submit, "Submit", class:"btn btn-danger post-button-form" %>
<% end %>
我可以选择&#34;是&#34;而不是类别。或&#34;否&#34; 我不能使用f.associations而不是f.input,因为我有一个错误,说我不能使用&#34; has_one&#34;关系。
我该怎么办?我真的卡住了:(
谢谢
答案 0 :(得分:1)
由于你在这里使用has_many_through
进行这种简单的关联(据我所知),它有点过于复杂。如果没有第三个模型(VideoCategory),您可以简单地使用正常的1对多关联。但在你的情况下:
params.require(:video).permit(:name, :description, video_categories_attributes: [:id, :foo, :bar])
accepts_nested_attributes_for :video_category
videos: video_category_id:integer categories: video_category_id:integer video_categories: video_id:integer category_id:integer
Video_category.create!
Video.last.video_category = 1
但我认为对于你的情况,在没有JoinedModel的情况下简单地使用一对多关联会更容易。
希望这能让你顺利进入。