验证失败:公园必须存在,用户必须存在
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”之间是不一样的。自己试试看有什么不同。
我正在开发一个项目,用户可以在其中看到狗 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”之间是不一样的。自己试试看有什么不同。