20

我有两个这样的模型:-

模型 1 - 卡片 - 包含对首页
附件名称 = 卡片图像感兴趣的数据的表示
模型 2 - 用户 - 包含用户
附件名称 = 头像

当我创作!一张新卡片,我希望将用户模型中的头像作为新卡片复制到卡片模型中。

有一个简单的衬里吗?

红宝石/导轨/回形针

4

4 回答 4

37

这应该可以解决问题,如果模型关联,您可以使用after_create回调,如果没有,我建议在创建卡的控制器操作中执行此操作。

instance_of_model_one.cardimage = instance_of_model_two.avatar
instance_of_model_one.save
于 2013-01-08T21:33:04.327 回答
3
old_avatar = model1.avatar;
model2.avatar.create(attachment: old_avatar.attachment);
model2.save;

它对我有用。

于 2015-08-26T08:52:04.043 回答
1

假设您有 2 个模型:

  • 用户
  • 播放器

您必须从profile_image复制User with id = 1Player 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!

这将完成工作!

于 2020-03-10T09:45:17.963 回答
0

理想情况下,@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 而不是对象解决了这个问题。

于 2020-08-11T13:23:29.107 回答