📜  rails 生成模型 - Ruby (1)

📅  最后修改于: 2023-12-03 15:19:42.186000             🧑  作者: Mango

Rails 生成模型 - Ruby

在 Ruby on Rails 中,模型是 MVC(模型-视图-控制器)框架中的重要部分。模型表示应用程序中的数据和业务逻辑,它们通常与数据库表一一对应。在 Rails 中,可以使用 rails generate 命令来为应用程序生成模型。

生成模型

要生成一个名为 Product 的模型,可以使用以下命令:

rails generate model Product

这将在 app/models 目录下创建一个名为 product.rb 的文件,其中包含一个 Product 类的定义。

模型属性

可以将模型属性包含在生成命令中,以便在生成过程中为模型添加属性。例如,要在 Product 模型中添加 namedescription 属性,请使用以下命令:

rails generate model Product name:string description:text

这将在 products 表中创建名为 namedescription 的列,类型分别为 stringtext

数据库迁移

在 Rails 中,将模型关联到数据库需要通过数据库迁移。可以使用以下命令创建一个名为 create_products 的迁移:

rails generate migration create_products

这将在 db/migrate 目录下创建一个名为 timestamp_create_products.rb 的文件。在该文件中,可以使用生成器提供的 create_table 方法来创建 products 表,并指定要包含的列和类型:

class CreateProducts < ActiveRecord::Migration[6.1]
  def change
    create_table :products do |t|
      t.string :name
      t.text :description

      t.timestamps
    end
  end
end

生成器添加了 namedescription 列的定义,并且 timestamps 列用于自动处理模型的创建和更新时间戳。

运行迁移

要运行迁移,请使用以下命令:

rails db:migrate

这将在数据库中创建 products 表,并将其与 Product 模型关联起来。

模型方法

在模型中可以定义各种方法。例如,以下是一个 Product 模型中的示例方法:

class Product < ApplicationRecord
  def on_sale?
    price.present? && price < 100
  end
end

此方法检查产品的价格是否小于 100 美元,并返回一个布尔值表示产品是否在打折销售中。

关联模型

通过在模型之间设置关联,可以轻松地在 Rails 应用程序中使用复杂的数据结构。以下是一个简单的关联示例,在该示例中,Product 模型与 Category 模型关联:

class Product < ApplicationRecord
  belongs_to :category
end

class Category < ApplicationRecord
  has_many :products
end

此代码告诉 Rails,Product 模型属于 Category 模型,并且 Category 模型可以有多个产品。这将在 Product 数据库表中添加一个 category_id 列,以便跟踪关联的类别。

总结

在 Rails 中生成模型是一个简单的过程。使用 rails generate 命令可以创建一个基本的模型,可以使用公共属性将属性包含在生成命令中。数据库迁移用于将模型关联到数据库,而模型方法和关联可用于轻松处理数据。