ruby-on-rails – Rails嵌套模型表单:验证外键的存在,除非用户
发布时间:2020-12-17 03:58:34 所属栏目:百科 来源:网络整理
导读:有一个非常简单的rails应用程序,这是我的代码: class Post ActiveRecord::Base belongs_to :category attr_accessible :category_id,:category_attributes accepts_nested_attributes_for :category,:reject_if = :all_blankendclass Category ActiveRecord
有一个非常简单的rails应用程序,这是我的代码:
class Post < ActiveRecord::Base belongs_to :category attr_accessible :category_id,:category_attributes accepts_nested_attributes_for :category,:reject_if => :all_blank end class Category < ActiveRecord::Base has_many :posts end #app/views/posts/_form.html.haml = simple_form_for(@post) do |f| = f.association :category = f.simple_fields_for :category do |cat_f| = cat_f.input :name 因此,在创建新帖子时,我可以选择一个类别(从选择菜单中)或创建一个新类别(如果它不存在). 我想验证category_id是否存在,除非用户选择创建新类别 我猜测有一种解决这个问题的方法 – 我知道我不能只添加验证:category_id,:presence =>是的,因为当用户决定创建新类别(并且不从下拉列表中选择一个类别)时,这将导致表单提交失败. 第二个问题: 解决方法
我想我已经通过替换来解决这个问题:
validates :category_id,:presence => true 同 validates :category,:presence => true 它似乎工作. PS 我只能想象这是有效的,因为:如果用户从下拉列表中选择某些内容,或者如果他们使用嵌套表单创建新类别,则认为类别存在,而之前使用我的原始代码:category_id仅被视为存在当用户从下拉列表中选择某些内容时,而不是在他们创建新记录时. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |