Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 保存空白嵌套模型问题_Ruby On Rails_Ruby_Validation_Model - Fatal编程技术网

Ruby on rails 保存空白嵌套模型问题

Ruby on rails 保存空白嵌套模型问题,ruby-on-rails,ruby,validation,model,Ruby On Rails,Ruby,Validation,Model,我的rails 4应用程序有3种型号: 商店(有很多:产品) 产品(有多个:产品字段,属于:存储并接受产品字段的嵌套属性) 产品字段(有一个属于:产品) 产品只有store\u id和id字段。产品\u字段有string\u content和text\u content。基本上,现在我的商店模型如下所示: class Store < ActiveRecord::Base has_many :products accepts_nested_attributes_for :prod

我的rails 4应用程序有3种型号:

  • 商店(有很多:产品)
  • 产品(有多个:产品字段,属于:存储并接受产品字段的嵌套属性)
  • 产品字段(有一个属于:产品)
  • 产品只有store\u idid字段。产品\u字段有string\u contenttext\u content。基本上,现在我的商店模型如下所示:

    class Store < ActiveRecord::Base
       has_many :products
       accepts_nested_attributes_for :products, :allow_destroy => true, :reject_if => :product_empty
    
       private
    
       def product_empty(a)
         a[:product_fields_attributes][:text_content].blank?
       end
    
    end
    
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"nFUg4ynXYyg99rPPPoa3uO/iHP4LT1XlOz3Vm3Zm4Z0=", "store"=>{"name"=>"Test", "products_attributes"=>{"0"=>{"type_of"=>"Book", "product_fields_attributes"=>{"0"=>{"text_content"=>"test1"}}}}}, "commit"=>"Create Store"}
    


    我的问题是:如果方法在嵌套模型上工作,我如何获得拒绝方法?因此,我不想验证嵌套模型,我只想在相关产品字段文本内容为空时不保存产品?

    如果您指的是属性中的产品字段属性,那么是的,这是可能的

    def product_empty(a)
         a[:product_fields_attributes].each do |field_id, params|
           return true if params[:text_content].blank?
         end
         return false
    end
    

    您的代码不起作用,因为您试图引用:product\u fields\u属性作为属性的散列,但实际上它是:id=>:params对的散列。因此,params散列包含您需要的属性。

    如果您指的是属性中的product\u fields\u属性,那么是的,这是可能的

    def product_empty(a)
         a[:product_fields_attributes].each do |field_id, params|
           return true if params[:text_content].blank?
         end
         return false
    end
    

    您的代码不起作用,因为您试图引用:product\u fields\u属性作为属性的散列,但实际上它是:id=>:params对的散列。因此,params散列包含您需要的属性。

    如果您指的是属性中的product\u fields\u属性,那么是的,这是可能的

    def product_empty(a)
         a[:product_fields_attributes].each do |field_id, params|
           return true if params[:text_content].blank?
         end
         return false
    end
    

    您的代码不起作用,因为您试图引用:product\u fields\u属性作为属性的散列,但实际上它是:id=>:params对的散列。因此,params散列包含您需要的属性。

    如果您指的是属性中的product\u fields\u属性,那么是的,这是可能的

    def product_empty(a)
         a[:product_fields_attributes].each do |field_id, params|
           return true if params[:text_content].blank?
         end
         return false
    end
    

    您的代码不起作用,因为您试图引用:product\u fields\u属性作为属性的哈希,但实际上它是:id=>:params对的哈希。因此,params哈希包含您需要的属性。

    可能是递归验证关联模型

    class Store < ActiveRecord::Base
       has_many :products, validate: true
       accepts_nested_attributes_for :products, :allow_destroy => true
    end
    

    可能是递归验证关联模型

    class Store < ActiveRecord::Base
       has_many :products, validate: true
       accepts_nested_attributes_for :products, :allow_destroy => true
    end
    

    可能是递归验证关联模型

    class Store < ActiveRecord::Base
       has_many :products, validate: true
       accepts_nested_attributes_for :products, :allow_destroy => true
    end
    

    可能是递归验证关联模型

    class Store < ActiveRecord::Base
       has_many :products, validate: true
       accepts_nested_attributes_for :products, :allow_destroy => true
    end
    


    如果您是指属性中的产品\u字段\u属性,则可以是。如果要使用产品\u字段\u属性,请不要忘记为产品模型定义接受\u嵌套\u属性。如果您是指属性中的产品\u字段\u属性,则可以是。不要忘记为产品定义接受\u嵌套\u属性如果要使用产品字段属性,请选择模型。如果在属性中表示产品字段属性,则可以选择“是”。如果要使用产品字段属性,请不要忘记为产品模型定义接受嵌套属性。如果在属性中表示产品字段属性,则可以选择“是”。不要放弃如果您想使用product\u fields\u attributes,请使用et为产品模型定义接受\u嵌套的\u属性。谢谢您的回答。但是,如果我不想在所有product\u字段都为空的情况下创建产品,您该如何做?您可以使用has\u many:product\u fields,inverse\u of::product验证关联记录的存在。有关详细信息,请参阅本文详细信息:。它应该这样做。trickI尝试了这个方法,但似乎没有任何不同。您是否为您的产品模型添加了validates:product_字段,presence:true?我尝试了编辑,但如果我将其保留为空(因为validates方法),则会出现错误消息。我希望允许空白产品(意味着没有错误消息),我只是不想创建它们。谢谢你的回答。但是如果我不想在所有product_字段都为空的情况下创建产品,你该怎么做?你可以使用has_many:product_字段,inverse_of::product验证关联记录的存在。有关详细信息,请参阅本文:。它应该可以做到,trickI尝试了这一点,但似乎没有做到工作方式有什么不同吗?您是否为您的产品模型添加了validates:product_字段,presence:true?我尝试了编辑,但如果我将其保留为空(因为validates方法),则会出现错误消息。我希望允许空白产品(意味着没有错误消息),我只是不想创建它们。谢谢你的回答。但是如果我不想在所有product_字段都为空的情况下创建产品,你该怎么做?你可以使用has_many:product_字段,inverse_of::product验证关联记录的存在。有关详细信息,请参阅本文:。它应该可以做到,trickI尝试了这一点,但似乎没有做到工作方式有什么不同吗?您是否为您的产品模型添加了validates:product_字段,presence:true?我尝试了编辑,但如果我将其保留为空(因为validates方法),则会出现错误消息。我希望允许空白产品(意味着没有错误消息),我只是不想创建它们。谢谢你的回答。但是如果我不想在所有product_字段都为空的情况下创建产品,你该怎么做?你可以使用has_many:product_字段,inverse_of::product验证关联记录的存在。有关详细信息,请参阅本文:。它应该可以做到,trickI尝试了这一点,但似乎没有做到工作方式有什么不同吗?您是否为您的产品模型添加了validates:product_字段,presence:true?我尝试了编辑,但如果我将其保留为空(因为validates方法),则会出现错误消息。我希望允许空白产品(意味着没有错误消息),我只是不想创建它们。但我真的不想验证模型,我只是不想将其保存为空。但我真的不想验证模型,我只是不想将其保存为空。但我真的不想验证模型,我只是不想将其保存为空。但我真的不想验证模型,我只是不想我不想把它们留为空白。