CCH wrote:
Hi Huw
The context is that if one selects validates_presence_of , what does
RIS output ?
I’m not quite sure what you mean by its “output”. If you enter part of
the name - e.g. val then press ctrl+space, you will get a list of
methods (in scope) that begin with those letters. The RDOC for
validates_presence_of is shown alongside it in a tooltip next to the
code completion list or (more nicely formatted) in a docked RDOC window
(this is the complete RDOC documentation which, for reference, I’ve put
at the end of this post).
The parameter list and class (here: attr_names:Object) can also be
displayed in a hovering tooltip. Here the parameter type is Object
because that is all that can be inferred from this method definition at
edit time. In many cases, we can infer specific class types such as
Array or String but it turns out that the code in the
validates_preesence_of method does not provide that information. We also
have a type assertion facility, however, whereby you can enter a comment
over a method - e.g.
#:return: => Array
#:arg: anArg => MyClass
This will then provide more detailed parameter info in tooltips than can
be inferred from the code itself.
best wishes
Huw
SapphireSteel Software
Ruby and Rails In Visual Studio
http://www.sapphiresteel.com
p.s. As promised, above, here’s our context-sensitive RDOC documentation
for validates_presence_of…
Validates that the specified attributes are not blank (as defined by
Object#blank?). Happens by default on save. Example:
class Person < ActiveRecord::Base
validates_presence_of :first_name
end
The first_name attribute must be in the object and it cannot be blank.
If you want to validate the presence of a boolean field (where the real
values are true and false),
you will want to use validates_inclusion_of :field_name, :in => [true,
false]
This is due to the way Object#blank? handles boolean values.
false.blank? # => true
Configuration options:
- message - A custom error message (default is: “can’t be blank”)
- on - Specifies when this validation is active (default is :save, other
options :create, :update)
- if - Specifies a method, proc or string to call to determine if the
validation should
occur (e.g. :if => :allow_validation, or :if => Proc.new { |user|
user.signup_step > 2 }). The
method, proc or string should return or evaluate to a true or false
value.
Warning
Validate the presence of the foreign key, not the instance variable
itself.
Do this:
validate_presence_of :invoice_id
Not this:
validate_presence_of :invoice
If you validate the presence of the associated object, you will get
failures on saves when both the parent object and the child object are
new.
return: => Object
arg: attr_names => Object