Object#presence ������ Object#try �����������������Ï����������̏�����\���\½\���\������̏����������³�����������ҏ�𡭏������������������¹���«���폢�³�����¡�²������������\���\½\���\��������������������������������������������̏���������������������������������������¾���²��Ï��·�����������Ώ��������¹��¡�

Object#presence \���\½\���\���

���³�������������돪�²¼���������������Ï�����������µ������������������������������������������¹��¡�

def presence
  self if present?
end

present? \���\½\���\��������������������Ï��������������Ώ����я�����������¹\���­ blank? ���������ď��Ð������\���\½\���\��� (!blank?) ���������¹��¡�

��������������������¡�nil, false, [](����؏����只��), {}(�����\���\���\·\���), ""(����؏�����»��⏪��), " "(���¾³���\¹\��⏢�¼\¹���������ޏ���������»��⏪��)�����������������Ð false��¡��½�������돪�³�돢���������������Ð true ���������������������������¹����blank? ���������������¾³���\¹\��⏢�¼\¹���������ޏ���������»��⏪�я����� true ���������½���������¹�����������������������������������·�����ď��폢����¡�

��������¡��³������ presence \���\½\���\��������������������Ï��������� present? \���\½\���\������������¾²������·������·���²������� true �����������������Ð self �����ҏ�¡��µ���ޏ��������Ð nil �����ҏ����ӏ��·���������¹��¡��³�����я�����������������¡�

"foo".presence #=> "foo"
[].presence    #=> nil
" ".presence   #=> nil

���³������������²��ď��̡���ҏ��·�������������«�����������������������Ï�������¡��³�����Ï����������Ï��������ҏ��¹���������­������½��Џ��ޏ����������я��������¹��������������¡�

# ���³�����Ï����������Ï������̏���
name = params[:name].present? ? params[:name] : '���¾���µ���·'

# presence������»��������Ï��������³�����Ï�����������������!!
name = params[:name].presence || '���¾���µ���·'

Object#try \���\½\���\���

�����������á돫������������� Object#try \���\½\���\������������¹��¡��³������������ ActiveSupport 2.3 ���«���������³�����Џ��µ���������������·�����ď�¡�
»²¹�����¡�http://guides.rubyonrails.org/2_3_release_notes.html

���³��������������¡�user.name ���������·�����ď��������������­������ user.try(:name) �����Ώ����ď��������������·������»������������������¹��¡�

�����������������Ï�����������¡�¼��������� user.name ���������·�����ď��������­������ user ���� nil ������¾���¹������̏����������������������������������������¹���«��¡��½�����Ï����������Ï��������­������������ nil.name ������������������ NoMethodError ���������������������������·�����������Ï���������\���\��\���\������̏���̏���ߏ��������������ޏ��������¹���̏�¡�Object#try \���\½\���\���������»�����𡯏��Ð���¹���������­������½��Џ��������³���������̏��������­���������¹��¡�

# ���³�����Ï����������Ï������̏���
user ? user.name : '���¾���µ���·'

# try\���\½\���\���������»��������Ï��������³�����Ï�����������������!!
user.try(:name) || '���¾���µ���·'

���³��������¡�¼�������������ޏ����������� Object#send \���\½\���\��������� alias ��������¡�²�����𡯏����� NilClass#try \���\½\���\������̏�����µ������µ���������������������¹��¡����ď����������ď��³���������������ޏ��������¹���̡돪�³�돢���������������̏����������я��������¹��������¡�

class NilClass
  def try(*args)
    nil
  end
end

�����������������Ï��³��������������¡�Object#presence \���\½\���\��������� Object#try \���\½\���\������������·�����ď�¡�����������»�����������������ޏ�������¡񏪪����������­���µ������\���\��\���\������¹���������������­������ Object#presence \���\½\���\��������ҏ�¡�\���\½\���\���������������½Ð���·������������ Object#try \���\½\���\���������»��������Ï���������������������������\³���¼\��������ҏ��¹���������­���������µ���»���������·�����������Ï��� (����Ž��Ρ��Ž���)
³\\\\¼ҏ\\\\¼\²