First, make sure you've made at least one topic on the site.
Next, open a Rails console in the shell window:rails console
Approximate expected result:~/RandomWittyName$ rails console
Loading development environment (Rails 7.0.1)
irb(main):001:0>
The greyed-out text may differ and is not important.
Are you typing into the shell or are you typing into the rails console? This makes a big difference. You can always tell the two apart by the prompt
At the console, try the following things
See how many topics exist:Topic.count
Approximate expected result:irb(main):001:0> Topic.count
Topic Count (0.2ms) SELECT COUNT(*) FROM "topics"
=> 2
The greyed-out text may differ and is not important.
- On the first line you see
- the irb-prompt ending in with a greater-than sign, and after that
- the code you typed in
- on the second line, you can see (from right to left)
- the SQL Query that was sent to the database SELECT COUNT(*) FROM "topics"
- that it took 0.2ms to run that Query
- that it was run to compute the Topic count
- on the third line you see
- a "fat arrow" =>
- and after that the result: there is are two topics in this database
Most of the time you are only intrested in the last line with the result.
Save the first topic into a variable:my_topic = Topic.first
my_topic
here could have been any variable name, but we'll stick with my_topic
for consistency.
Change the title of that topic to something else:my_topic.update(title: 'Edited in the console')
Reload the page in the browser and you will see the change:
Add a vote to that topic:my_topic.votes.create
See how many votes that topic has:my_topic.votes.count
Remove a vote from that topic:my_topic.votes.first.destroy
Note that the things you can do to Model classes (like Topic and Vote), differ from the things you can do to Model instances (like my_topic, here). my_topic.votes is an association, and here behaves mostly like a model class.
Model class / association methods
- Topic.first
- Topic.last
- Topic.all
- Topic.count
- Topic.find_by_id(5)
- Topic.destroy_all
- my_topic.votes.count
- my_topic.votes.create
- my_topic.votes.destroy_all
Model instance methods
- my_topic.title
- my_topic.title = 'New title'
- my_topic.update_attributes(title: 'New title')
- my_topic.save
- my_topic.save!
- my_topic.destroy
- my_topic.votes.first.destroy