验证失败:公园必须存在,用户必须存在

Validation failed: Park must exist, User must exist

我正在开发一个项目,用户可以在其中看到狗 Parks 并为每个公园制作单独的 Playdates。我遇到的问题是 PlaydatesController 创建操作没有保留每个新播放日期与之关联的 user_id 和 park_id。我尝试将 optional: true 添加到我的 Playdate 模型中,它确实保存了每个 playdate。但是,这样做会为 user_id 和 park_id.

创建一个 null 列条目

我只需要 user_id 和 park_id 来创建一个游戏日期并保持游戏日期和公园之间的关联...我是否搞砸了我的关联?非常感谢任何帮助。

这是我的代码:

玩伴模特:

class Playdate < ApplicationRecord
  belongs_to :park
  belongs_to :user

  validates :date, presence: true 
  validates :time, presence: true
end

公园模型:

class Park < ApplicationRecord
  has_many :playdates
  has_many :comments
  has_many :users, through: :comments 
end

用户型号:

class User < ApplicationRecord
  has_many :parks
  has_many :playdates 
  has_many :comments, through: :parks
end

播放日期控制器:

def create
    @playdate = Playdate.new(playdate_params)
    if @playdate.save!
        redirect_to park_path(@park)
    else
        render :new
    end
end

private

def playdate_params
    params.require(:playdate).permit(:time, :date, :user_id, :park_id)
end

播放日期新视图:

<%= form_for @playdate do |f| %>
  <%= f.label :date %>
  <%= f.date_field :date %><br><br>
  <%= f.label :time %>
  <%= f.time_field :time %><br><br>
  <%= hidden_field_tag :user_id, current_user.id %>
  <%= hidden_field_tag :park_id, @park%>
  <%= f.submit "Add Playdate!" %>
<% end %>

你应该使用:

f.hidden_field :user_id, value: current_user.id
f.hidden_field :park_id, value: @park.id

渲染的 HTML 在“hidden_field_tag”和“hidden_field”之间是不一样的。自己试试看有什么不同。