0

これは、呼び出しを行っている関数のコードですnew

def create_person_detail_from_registration(type, registration, registration_detail)
  person_detail = type.constantize.new(
    :email        => registration.email_2,
    :phone_1      => registration_detail.phone_1,
    :phone_2      => registration_detail.phone_2,
    :phone_3      => registration_detail.phone_3,
    :phone_4      => registration_detail.phone_4,
    :phone_5      => registration_detail.phone_5,
    :phone_6      => registration_detail.phone_6,
    :phone_7      => registration_detail.phone_7,
    :address_1    => registration_detail.address_1,
    :address_2    => registration_detail.address_2,
    :city         => registration_detail.city,
    :state        => registration_detail.state,
    :postal_code  => registration_detail.postal_code,
    :country      => registration_detail.country
  )
  return person_detail
end

問題は、値typeが に設定されているか、または:emailに設定されているかによって異なります。もちろん、これを行う 1 つの方法は、コード全体をステートメントで囲んで 2 回記述することです。しかし、これを行うためのよりスマートでエレガントな方法があるかどうか知りたいだけですか?registration.email_2registration.emailif-elsif

4

1 に答える 1

1

条件を値に追加するだけです。

:email        => (type==1 ? registration.email_2 :  registration.email),
于 2012-04-10T07:47:27.863 に答える