Day 17:两步创建一个简单的 Rails 应用

今天做点试验(来自 《Ruby on Rails Tutorial》),先准备一个全新安装的 Rails 应用。

用户资源

生成一个 User 资源,给它添加一个 name  还有 email,存储用户的名字与电子邮件地址。

rails generate scaffold User name:string email:string

migrate 一下,会在数据库里创建 users 数据表,表里会有 name 与 email 字段。

rails db:migrate

现在你就可以在浏览器上管理用户了。

用户列表

/users

f8caf822-7ace-4c78-a5c5-089ffdc5ffac

创建新用户

/users/new

57c4574d-6bb9-42ef-92a5-0d5a1e12d3bd

ac2c5da5-3699-404d-a4e5-fc0602cdcba4

更新用户

/users/1/edit

b9b72b5d-20b2-41eb-88ce-6dacf1f61b8a

2ee77ae3-fa7d-4e95-a0c9-3a96e6839e82

用户列表

bab72c07-0535-436e-b609-262b0330f29e

微博资源

生成一个 Micropost 资源,表示微博,添加 content 与 user_id 字段,发布微博需要指定用户的 id 号。

rails generate scaffold Micropost content:text user_id:integer

migrate:

rails db:migrate

创建微博

9453a7ab-4cfb-489e-8044-4c4a98528d35

96e05968-20f7-44a2-a43b-e97f4cec7a2b

1a40402f-e05a-4891-aedf-69ee30c68c49

微博列表

0ff82b11-07e7-44a5-82ae-463d1a3db2cb

验证

要求微博的 content 字段的值最多 140 个字符,而且它是一个必填字段。

class Micropost < ApplicationRecord
  belongs_to :user
  validates :content, length: { maximum: 140 }, presence: true
end

试验

试一下在发布微博的时候,在 content 里输入超过 140 个字符,然后提交一个表单,Rails 会出现提示。

176a4f9c-85a4-4e89-977a-0782fb64138d

关系

用户 has_many :microposts,一个用户可以发布多条微博。微博 belongs_to :user,一条微博属于一个用户。
app/models/user.rb

class User < ApplicationRecord
  has_many :microposts
end

app/models/micropost.rb

class Micropost < ApplicationRecord
  belongs_to :user
end

试验

打开 Rails 的控制台:

rails console

找到一个用户:

user = User.first

看看这个用户都发布了哪些微博:

user.microposts

找到这个用户发布的第一条微博:

micropost = user.microposts.first

看看发布这条微博的用户是谁:

micropost.user

幕后

生成一个资源,会给我们生成这个资源对应的模型,模型对应的数据表,资源的路由,对应的控制器,控制器用的视图。

rails generate scaffold User name:string email:string

下面是返回的东西:

Running via Spring preloader in process 50
      invoke  active_record
      create    db/migrate/20161014000332_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml
      invoke  resource_route
       route    resources :users
      invoke  scaffold_controller
      create    app/controllers/users_controller.rb
      invoke    erb
      create      app/views/users
      create      app/views/users/index.html.erb
      create      app/views/users/edit.html.erb
      create      app/views/users/show.html.erb
      create      app/views/users/new.html.erb
      create      app/views/users/_form.html.erb
      invoke    test_unit
      create      test/controllers/users_controller_test.rb
      invoke    helper
      create      app/helpers/users_helper.rb
      invoke      test_unit
      invoke    jbuilder
      create      app/views/users/index.json.jbuilder
      create      app/views/users/show.json.jbuilder
      create      app/views/users/_user.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/users.coffee
      invoke    scss
      create      app/assets/stylesheets/users.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.scss


微信好友

用微信扫描二维码,
加我好友。



微信公众号

用微信扫描二维码,
订阅宁皓网公众号。



240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

7291
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点