Agreed. Was just trying to keep it common across the board as presence is essentially on Object and also thought '.presence(default)' was more idiomatic than '.presence || default` . Thanks.
On Monday, March 4, 2019 at 3:00:28 PM UTC-8, DHH wrote: > > I don't think Boolean#presence buys you enough over just a #nil? check to > warrant the awkwardness of the passed parameter. > > On Sunday, March 3, 2019 at 4:54:26 PM UTC-8, Ashwin Kumar Subramanian > wrote: >> >> From the comments on the file, one of the main short hand usage of >> 'presence' method is : >> >> # For example, something like >> # >> # state = params[:state] if params[:state].present? >> # country = params[:country] if params[:country].present? >> # region = state || country || 'US' >> # >> # becomes >> # >> # region = params[:state].presence || params[:country].presence || 'US' >> >> However the '||' use case does not play well if the Object is a boolean >> type. Example usecase : >> >> # checked = false >> # checked.presence || true >> #=> this returns true even even though checked has a value. >> >> Would it be a good idea to have a default value on presence method the >> way we can provide one with 'fetch' method ? . Example : >> >> def presence(default_value = nil) >> return self if present? >> default_value >> end >> >> checked = false >> checked.presence(true) #instead of 'checked.presence || value' >> # This also reducers from using '||' and we can just use the argument. >> Very similar to hash.fetch(key, default_value) >> >> Not a big case/change, but was wondering if someone was having the urge >> of adding this one line to make life a little easier :) >> >> >> -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-core+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-core@googlegroups.com. Visit this group at https://groups.google.com/group/rubyonrails-core. For more options, visit https://groups.google.com/d/optout.