gpt4 book ai didi

ruby-on-rails - update_attributes() 不适用于嵌套属性和回形针?

转载 作者:行者123 更新时间:2023-12-01 06:39:08 24 4
gpt4 key购买 nike

我的模型描述了段落和图像,其中每个段落都有_许多图像。对于图像处理,我使用回形针。对于批量分配,我将图像用作段落的nested_attributes。相关代码:

模型/段落.rb

class Paragraph < ActiveRecord::Base
has_many :images, :dependent => :destroy
attr_accessible :text, :images_attributes, :images
attr_accessor :text
accepts_nested_attributes_for :images, :allow_destroy => true, :reject_if => proc { |attributes| attributes['photo'].blank? }
end

模型/图像.rb
class Image < ActiveRecord::Base
belongs_to :paragraph
has_attached_file :photo, :styles => { :original => '250*250>' }
attr_accessible :caption, :photo
attr_accessor :caption
end

phase.text 和 image.caption 是临时属性(不在数据库中)。如果我更新 Controller 或 rails 控制台中的一个段落(假设 id=1 的图像确实属于第一段),以下内容会按预期更新 parade.text,但根本不更新 image.caption:
Paragraph.first.update_attributes({"text" => "foo", "images_attributes"=>{"0"=>{"caption"=>"bar", "id"=>"1"}}})

但是在不使用回形针的类似设置(嵌套的临时属性)中,它按预期工作,例如对于页面,其中一个页面有_many 个段落:
Page.first.update_attributes({"paragraphs_attributes"=>{"0"=>{"text"=>"test", "id"=>"1"}}})

这会按预期更新页面和嵌套段落的值及其临时文本属性,这让我猜测,这可能是回形针问题......

任何帮助表示赞赏!谢谢!!!

最佳答案

给定 images_attributes

{"0"=>{"caption"=>"bar", "id"=>"1"}}

相信缺少一个 photo key 导致它被 Paragraph 拒绝由于 reject_if accepts_nested_attributes_for 的选项称呼。 attributes['photo']将是 nil如果未提供和 nil.blank?true ,所以被拒绝了。

关于ruby-on-rails - update_attributes() 不适用于嵌套属性和回形针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12534462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com