2011-02-26 29 views
0

什么是这样做的更聪明的方式:红宝石设置multipe值一次

@entity.description = @resource.description 
@entity.aliases = @resource.aliases 
@entity.image = @resource.thumbnail 
@entity.freebase = @resource.url 
@entity.same_as = @resource.webpages 

感谢。

回答

2

你可以写这样的:

{:description => :description=, :aliases => :aliases=, :image => :thumbnail=, 
:freebase => :url=, :same_as => :webpages=}.each do |from, to| 
    @entity.send(to, @resource.send(from)) 
end 

但我怀疑这会增加太多代码的可读性。您可能会更好地保留它,因为您现在拥有的代码就像写代码一样简短,并且使代码难以理解并使其更难阅读。

3

如果您在两个类之间共享的少数几个字段,可以考虑将它们打包到一个类中,并简单地分配(或克隆)它。然后你的代码如下:

@entity.info = @resource.info 

这当然要求你完全控制这些类。