Aspire systems ruby on rails interview questions 2024
By | 8 months ago
Certainly! Here's the content formatted in Markdown:
### 1. What is the advantage of Ruby on Rails? - Ruby on Rails is known for its rapid development capabilities, convention over configuration philosophy, and robust ecosystem. It offers a structured environment that encourages the use of best practices, facilitates the integration of web services, and simplifies the development process with its DRY (Don't Repeat Yourself) principle. ### 2. Explain MVC in Ruby on Rails. - MVC stands for Model-View-Controller, a design pattern that segregates the application into three main components. Models handle data and business logic, Views are responsible for the user interface and presentation, and Controllers bridge the Models and Views, managing the flow of data and the interaction between the other two components. ### 3. What is the difference between classes and modules in Ruby? - In Ruby, classes are used to create objects, whereas modules group related methods and constants together but cannot instantiate objects. Modules are used to add functionalities to classes through mixins, allowing for a form of multiple inheritance. ### 4. What is the difference between \`destroy\` and \`delete\` in Rails? - \`destroy\` invokes the model's callbacks and checks for associations with \`dependent: :destroy`, ensuring associated records are also deleted or handled as per the association. `delete\` skips callbacks and doesn't ensure the deletion of associated records, making it faster but potentially leaving orphaned records in the database. ### 5. How do migrations work in Rails? - Migrations in Rails are a way to alter the database schema over time in a consistent and reversible manner. They define changes to be made to the database, like adding or removing tables, columns, and indexes, and can be rolled back to a previous state if needed. ### 6. How do models work in Rails? - Models in Rails represent the data of the application and encapsulate the database interaction. They define the schema through migrations, validations, associations, and potentially custom logic for interacting with that data. ### 7. What is Active Job in Rails? - Active Job is a framework in Rails that provides a standard interface for declaring jobs and making them run on a variety of queuing backends. It allows for the execution of operations in the background, like sending emails or processing files, thus improving the scalability and user experience of the application. ### 8. What is ActiveRecord in Rails? - ActiveRecord is the ORM (Object-Relational Mapping) layer in Rails, providing an interface and binding between the tables in a relational database and the Ruby code. It abstracts complex SQL queries, enables data manipulation through Ruby methods, and implements relationships, validations, and callbacks. ### 9. What are controllers in Rails? - Controllers in Rails are the central hub of the application, directing the flow of data between the models and views. They process incoming requests, interact with the model to fetch or save data, and decide which view to render. ### 10. What are views in Rails? - Views in Rails are templates that generate the HTML output for the user interface. They display data and provide a way to capture user input, typically using Embedded Ruby (ERB) or other templating languages. ### 11. How do you define a route in Rails? - Routes in Rails are defined in the \`config/routes.rb\` file. They map incoming requests to controllers and actions, specifying the URL patterns and HTTP verbs to match requests to the appropriate processing logic. ### 12. What is an easy way to define routes in Rails? - The easiest way to define routes in Rails is using resource routing, which automatically creates multiple routes for CRUD (Create, Read, Update, Delete) operations following RESTful conventions. For example, \`resources :articles\` creates a set of routes for managing articles. ### 13. Explain collection vs member routes in Rails. - In Rails routing, a member route requires an ID, as it acts on a specific record, whereas a collection route doesn't, as it acts on a collection of objects. For example, \`get 'profile', on: :member\` creates a route that expects an ID, while \`get 'search', on: :collection\` creates a route that doesn't. ### 14. What are gems in Ruby? - Gems are libraries in Ruby that provide specific functionalities or features that can be included in Ruby applications. They are packaged, versioned, and distributed through RubyGems, the Ruby package manager. ### 15. What is a Gemfile in Rails? - The Gemfile is a file in a Rails application that specifies the gem dependencies required by the application. Bundler, a Ruby tool, uses the Gemfile to ensure that the right gems and versions are installed. ### 16. How do you install gems in a Rails application? - To install gems in a Rails application, you add them to the Gemfile and then run `bundle install`. Bundler will handle the installation of the specified gems and their dependencies. ### 17. What are strong parameters in Rails? - Strong parameters in Rails are a security feature to prevent mass assignment vulnerabilities. They require developers to explicitly specify which parameters are allowed to be used in active model mass assignments, like creating or updating a record. ### 18. Have you implemented authentication and authorization in Rails? - Yes, I have implemented authentication to verify the identity of users and authorization to ensure users have permission to perform certain actions. Rails has gems like Devise for authentication and CanCanCan or Pundit for authorization to facilitate these features. ### 19. What is the difference between \`has_many :through\` and \`has_and_belongs_to_many\` associations in Rails? - \`has_many :through\` is used to set up a many-to-many relationship with an additional join model, allowing for extra attributes and validations on the join table. \`has_and_belongs_to_many\` also sets up a many-to-many relationship but without a join model, making it simpler but less flexible than `has_many :through`. ### 20. What is up and down method in migration? ### \`up\` Method The \`up\` method is called when you run a migration with \`rails db:migrate`. It should define the changes you want to apply to the database. For example, if you want to add a table, you would define it in the `up\` method. ```ruby class CreateProducts < ActiveRecord::Migration[6.0] def up create_table :products do |t| t.string :name t.text :description t.timestamps end end end
`down` Method
The `down` method is the opposite of the `up` method. It defines what should happen when you revert a migration with `rails db:rollback. The
down` method should reverse the operations defined in the `up` method.
class CreateProducts < ActiveRecord::Migration[6.0] def down drop_table :products end end
Using `change` Instead
While `up` and `down` methods offer precise control, Rails migrations are often written with a single `change` method, which is a more concise way. Rails knows how to reverse many common migration commands automatically. If you use the `change` method, you don't need to explicitly define `up` and down
.
class CreateProducts < ActiveRecord::Migration[6.0] def change create_table :products do |t| t.string :name t.text : description t.timestamps end end end
Rails is smart enough to know that the reversal of `create_table` is `drop_table, so if you run a rollback on this migration, Rails will drop the
products` table.
When to Use `up` and `down`
You should use `up` and `down` methods when you have a migration that Rails can't automatically reverse. For instance, if you have a migration that executes a particular SQL query, Rails might not know how to reverse that, and you'll need to explicitly define `down` to clarify how to undo the migration.