メソッドが存在する場合、メソッドを条件付きで呼び出す方法がありますか?存在スタイル可能な属性の試行メソッド
は現在やって:たとえば
count = if thing.respond_to?(:sometimes_available)
thing.sometimes_available
else
thing.do_expensive_query_to_get_available
end
は時々私がコレクションを照会し、余分な属性
Thing.join(:authors)
.select('things.*, count(authors.id) as sometimes_available')
.group('things.id')
を選択するような何かを行うに素晴らしいことだ:
thing.presence(:sometimes_available) || thing.expensive
が、これは明らかにOPが求めているもののために働くときに、少なくともダウン投票の理由を取得するとよいでしょう;) –
は、あなたがソースコードにリンクすることができますか?私の 'try'メソッドは違って見えます。 'respond_to? 'を使用せず、' def try(* a、&b) a.emptyなら実際にはエラーを投げますか? && block_given? 収入自己 else __send __(* a、&b) end end' –
Oh sad。私のプロジェクトはrails3です。あなたの解決策はrails4に導入されました –