ruby将回形针附件从一个模型复制到另一个模型?

时间:2013-01-08 21:09:57

标签: ruby-on-rails ruby paperclip

我有两个这样的模型: -

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

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

这是否有一个简单的衬垫?

Ruby / Rails / Paperclip

4 个答案:

答案 0 :(得分:34)

这应该可以解决问题,如果模型关联,你可以使用after_create回调,如果不是,我会建议在创建卡的控制器操作中使用它。

instance_of_model_one.cardimage = instance_of_model_two.avatar
instance_of_model_one.save

答案 1 :(得分:2)

old_avatar = model1.avatar;
model2.avatar.create(attachment: old_avatar.attachment);
model2.save;

它对我有用。

答案 2 :(得分:0)

假设您有2个模型:

  • 用户
  • 玩家

您必须将profile_imageUser 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!

这将完成工作!

答案 3 :(得分:0)

理想情况下,@ cih提到的方法应该可行:


> with(df, df[order(jk, jj, jn),])
  jj jk jn
5 bd  0  0
6 bi  0  0
4 cj  0  1
3 ak  1  1
2 al  1  0
1 an  1  2
7 bj  2  3
9 bl  2  1
8 bn  2  1

但就我而言,它是在S3中创建一个空白文件。为了解决该问题,我尝试了以下方法,并且有效:

instance_of_model_one.cardimage = instance_of_model_two.avatar
instance_of_model_one.save

通过URL而不是第一条语句中的对象解决了该问题。