media = Media.new(params[:media])
media.save
@attachment.media = Media.find(????)
@attachment.save
我只是尝试media.id
但显然,那是尚未保存到数据库的媒体....所以我该如何获取ID?
答案 0 :(得分:5)
如果未分配media.id
,则保存时可能会出错,media.save
返回false
,但由于您没有检查,因此您没有注意到。
避免这种情况的方法是请求更严格的保存:
def something
media = Media.new(params[:media])
media.save!
rescue ActiveRecord::RecordInvalid
# Something couldn't be saved
render(...)
end
通常,如果记录保存正确,则media.errors.full_messages
将为空数组。
如果没有错误,那么您的某个before_
或after_
过滤器可能会返回false并阻止其保存,但这种情况不常见。
答案 1 :(得分:2)
为什么不执行以下操作?
media = Media.new(params[:media])
media.save
@attachment.media = media
@attachment.save
答案 2 :(得分:1)
为什么不使用通过关联获得的build_xxx方法?
@attachment.build_media(params[:media])
@attachment.save
答案 3 :(得分:0)
我认为这个媒体对象无效,因此尚未保存。
如果它已保存,您将设置media.id。