我有两个这样的模型:-
模型 1 - 卡片 - 包含对首页
附件名称 = 卡片图像感兴趣的数据的表示
模型 2 - 用户 - 包含用户
附件名称 = 头像
当我创作!一张新卡片,我希望将用户模型中的头像作为新卡片复制到卡片模型中。
有一个简单的衬里吗?
红宝石/导轨/回形针
我有两个这样的模型:-
模型 1 - 卡片 - 包含对首页
附件名称 = 卡片图像感兴趣的数据的表示
模型 2 - 用户 - 包含用户
附件名称 = 头像
当我创作!一张新卡片,我希望将用户模型中的头像作为新卡片复制到卡片模型中。
有一个简单的衬里吗?
红宝石/导轨/回形针
这应该可以解决问题,如果模型关联,您可以使用after_create
回调,如果没有,我建议在创建卡的控制器操作中执行此操作。
instance_of_model_one.cardimage = instance_of_model_two.avatar
instance_of_model_one.save
old_avatar = model1.avatar;
model2.avatar.create(attachment: old_avatar.attachment);
model2.save;
它对我有用。
假设您有 2 个模型:
您必须从profile_image
复制User with id = 1
到Player with id = 10
。您可以执行以下操作:
user = User.find(1)
player = Player.find(10)
player.profile_image = user.profile_image
player.save!
有时这可能会保存文件,但文件大小为 0 字节。在这种情况下,请尝试以下操作:
user = User.find(1)
player = Player.find(10)
player.profile_image = user.profile_image.url
player.save!
这将完成工作!
理想情况下,@cih 提到的方法应该有效:
instance_of_model_one.cardimage = instance_of_model_two.avatar
instance_of_model_one.save
但就我而言,它是在 S3 中创建一个空白文件。为了解决这个问题,我尝试了以下方法并且它有效:
instance_of_model_one.cardimage = instance_of_model_two.avatar.url
instance_of_model_one.save
在第一条语句中传递 URL 而不是对象解决了这个问题。