Ruby устанавливает несколько значений сразу - PullRequest
0 голосов
/ 26 февраля 2011

Какой умный способ сделать это:

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

Спасибо.

Ответы [ 2 ]

3 голосов
/ 26 февраля 2011

Если у вас есть более чем несколько полей, которые совместно используются двумя классами, вы можете рассмотреть возможность их упаковки в класс и просто назначить (или клонировать) его. Тогда ваш код будет выглядеть так:

  @entity.info = @resource.info

Это, конечно, требует от вас полного контроля над классами.

2 голосов
/ 26 февраля 2011

Вы могли бы написать это так:

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

Но я сомневаюсь, что это значительно повысит читабельность вашего кода. Возможно, вам лучше оставить его, поскольку у вас есть код прямо сейчас, так как вы пишете его так коротко, как я запутывал код и затруднял его чтение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...