誰かが次のような動作を説明することはできますか?彼らは両方とも同じものを返すべきです。Rails .nilを返さないでください。
@properties.filtros_hash
=> {"casa"=>"sim"}
@properties.try(:filtros_hash)
=> nil
誰かが次のような動作を説明することはできますか?彼らは両方とも同じものを返すべきです。Rails .nilを返さないでください。
@properties.filtros_hash
=> {"casa"=>"sim"}
@properties.try(:filtros_hash)
=> nil
@propertiesは、私の場合、SimpleDelegatorのインスタンスでした。このような何か:
class PropertiesDecorator < SimpleDelegator
def filtros_hash
{some_hash: 'hash'}
end
end
@properties = PropertiesDecorator.new(@properties)
を念頭に置いていることを持つこと、およびRails's documentation about .try
を読んで、私はこれを発見:
をも試みがオブジェクトで定義されていることに注意してください。したがって、 は、BasicObjectの直接サブクラスのように、先祖の の祖先のうちObjectを持たないクラスのインスタンスでは動作しません。たとえば、 をSimpleDelegatorで試してみると、デリゲーター自体で の代わりにtryをターゲットに委譲します。厳しいPropertiesDecoratorが
filtros_hash
インスタンスメソッドを持っているので.tryfiltros_hash
使用することによって、この高度に予期しない動作を説明だから
は、@propertiesそのような方法は存在しない(ActiveRecordの)に委任されています。