The to_s method changes an object into a string. This helps when you want to show or use the object as text.
When you want to print an object in a readable way.
When you need to combine an object with other text.
When saving or sending data as text.
When debugging to see what an object contains.
When converting numbers or other types to strings for display.
Syntax
Ruby
object.to_s
Every object in Ruby has a to_s method.
You can define your own to_s method inside a class to customize how objects turn into strings.
Examples
Convert a number to a string.
Ruby
123.to_s# => "123"
Convert a boolean to a string.
Ruby
true.to_s# => "true"
Custom to_s method in a class to show a friendly message.
Ruby
class Person
definitialize(name)
@name = name
enddefto_s"Person named #{@name}"endendp = Person.new("Anna")
putsp.to_s
Sample Program
This program creates a Book object and prints it as a string using the custom to_s method.
Ruby
class Book
definitialize(title, author)
@title = title
@author = author
enddefto_s"\"#{@title}\" by #{@author}"endend
book = Book.new("Ruby Basics", "Sam")
puts"Book info: " + book.to_s
OutputSuccess
Important Notes
If you don't define to_s in your class, Ruby shows a default string like #<ClassName:object_id>.
Use to_s to make your objects easier to understand when printed or logged.
Summary
to_s turns any object into a string.
You can customize to_s in your classes for clearer output.
It helps when printing, debugging, or combining objects with text.
Practice
(1/5)
1. What does the to_s method do in Ruby?
easy
A. Converts an object to its string representation
B. Converts a string to a number
C. Deletes an object from memory
D. Creates a new object
Solution
Step 1: Understand the purpose of to_s
The to_s method is used to convert any Ruby object into a string format.
Step 2: Compare options with the definition
Only Converts an object to its string representation correctly describes this conversion to string. Other options describe unrelated actions.
Final Answer:
Converts an object to its string representation -> Option A
Quick Check:
to_s means convert to string [OK]
Hint: Remember: to_s means 'to string' conversion [OK]
Common Mistakes:
Confusing to_s with to_i (integer conversion)
Thinking to_s deletes objects
Assuming to_s creates new objects
2. Which of the following is the correct way to define a custom to_s method in a Ruby class?
easy
A. def to_s; "My object"; end
B. def toString; "My object"; end
C. def tostring; "My object"; end
D. def to_s() "My object" end
Solution
Step 1: Recall Ruby method naming conventions
Ruby method names are case-sensitive and to_s must be exactly that, with underscore and lowercase.
Step 2: Check syntax correctness
def to_s; "My object"; end uses correct method name and syntax. def to_s() "My object" end misses semicolon or newline before string, causing syntax error. Options B and C use wrong method names.
Final Answer:
def to_s; "My object"; end -> Option A
Quick Check:
Method name must be exactly to_s [OK]
Hint: Use exact method name to_s with underscore [OK]
Common Mistakes:
Using wrong method names like toString or tostring
Omitting semicolons or line breaks causing syntax errors
Using parentheses incorrectly in method definition
3. What will be the output of this Ruby code?
class Person
def initialize(name)
@name = name
end
def to_s
"Person named #{@name}"
end
end
p = Person.new("Alice")
puts p.to_s
medium
A. #
B. Error: undefined method to_s
C. Alice
D. Person named Alice
Solution
Step 1: Understand the custom to_s method
The class Person defines to_s to return "Person named #{@name}", where @name is set to "Alice".
Step 2: Check what puts p.to_s prints
Calling p.to_s returns "Person named Alice", which is printed by puts.
Final Answer:
Person named Alice -> Option D
Quick Check:
Custom to_s returns formatted string [OK]
Hint: Custom to_s returns your string, not default object info [OK]
Common Mistakes:
Expecting default object id string instead of custom string
Confusing instance variable with method name
Thinking to_s is undefined
4. Identify the error in this Ruby class that tries to customize to_s:
class Car
def initialize(model)
@model = model
end
def to_s
"Car model: " + model
end
end
c = Car.new("Tesla")
puts c.to_s
medium
A. Missing return statement in to_s
B. Syntax error in method definition
C. Undefined local variable or method 'model'
D. No error, prints 'Car model: Tesla'
Solution
Step 1: Check variable usage inside to_s
The method uses model without @, but the instance variable is @model.
Step 2: Understand Ruby variable scope
Without @, Ruby looks for a local variable or method named model, which does not exist, causing an error.
Final Answer:
Undefined local variable or method 'model' -> Option C
Quick Check:
Instance variables need @ prefix inside methods [OK]
Hint: Use @ before instance variables inside methods [OK]
Common Mistakes:
Forgetting @ before instance variables
Assuming local variables exist without definition
Thinking return statement is mandatory
5. You want to create a Ruby class Book that stores a title and author, and when printed, shows "Title: [title], Author: [author]". Which to_s method correctly achieves this?
hard
A. def to_s
"#{title}, #{author}"
end
B. def to_s
"Title: #{@title}, Author: #{@author}"
end
C. def to_s
"Title: title, Author: author"
end
D. def to_s
puts "Title: #{@title}, Author: #{@author}"
end
Solution
Step 1: Use instance variables with interpolation
To show the actual title and author values, use #{@title} and #{@author} inside the string.
Step 2: Avoid printing inside to_s
to_s should return a string, not print it. def to_s
puts "Title: #{@title}, Author: #{@author}"
end uses puts, which returns nil.
Final Answer:
def to_s
"Title: #{@title}, Author: #{@author}"
end -> Option B
Quick Check:
Return string with instance variables interpolated [OK]
Hint: Return string with #{@var}, don't print inside to_s [OK]
Common Mistakes:
Using variable names without @ inside strings
Printing inside to_s instead of returning string
Not interpolating variables, printing literal text
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.