`

Rails之Model

 
阅读更多

首先安装ruby,rails,gem等工具

ssy@ubuntu:~/test/demoproject$ rails -v
Rails 2.3.14
ssy@ubuntu:~/test/demoproject$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
ssy@ubuntu:~/test/demoproject$ gem -v
1.8.23

sudo gem install sqlite3 -v '1.3.7'

如果出现如下错误,安装execjs,therubyracer两个库即可

root$ ~/public_html/demo> rails server
/usr/lib/ruby/gems/1.9.1/gems/execjs-1.4.0/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
 
sudo gem install execjs
sudo gem install therubyracer

vi demo/Geminfo 添加
gem 'execjs'
gem 'therubyracer'
首先创建rails项目,并创建model
rails demoproject
cd demoproject
root$ ruby script/generate model t_model
      exists  app/models/
      exists  test/unit/
      exists  test/fixtures/
      create  app/models/t_model.rb
      create  test/unit/t_model_test.rb
      create  test/fixtures/t_models.yml
      create  db/migrate
      create  db/migrate/20130504114544_create_t_models.rb
如上所示,rails自动生成model文件以及测试文件等

 

编辑create_t_models.rb如下,定义表结构:

class CreateTModels < ActiveRecord::Migration
  def self.up
    create_table :t_models do |t|
      t.string  :name
      t.string  :passwd, :limit => 40
      t.integer :age
      t.text    :profile, :text
      t.boolean :admin, :default => false

      t.timestamps
    end
  end

  def self.down
    drop_table :t_models
  end
end
运行rake db:migrate生成数据表,如果想增删改表结构,可以实现如下
root$ script/generate migration add_tel_colum
      exists  db/migrate
      create  db/migrate/20130504130846_add_tel_column.rb

class AddTelColumn < ActiveRecord::Migration
  def self.up
    add_column :t_models, :tel, :string
  end

  def self.down
    remove_column :t_models, :tel
  end
end
tails提供console工具实现ORM操作数据表 (script/console production|test)
root$ script/console
>>TModel.create(:name=>"ciaos", :passwd=>"passwd", :age=>25, :profile=>"Find the Next", :admin=>false)
>>TModel.create(:name=>"ciaos2", :passwd=>"passwd2", :age=>26, :profile=>"Find the Next", :admin=>false)

>> t=TModel.new
=> #<TModel id: nil, name: nil, passwd: nil, age: nil, profile: nil, text: nil, admin: false, created_at: nil, updated_at: nil>
>> t.name="ciaos3"
=> "ciaos3"
>> t.passwd="passwd3"
=> "passwd3"
>> t.save
=> true

>>TModel.find_by_age(25)
rails提供development/test/production三种数据库,如果要生成别的数据库,使用如下命令

rake db:setup RAILS_ENV="production"

rake db:create RAILS_ENV=test

./script/server -e production(指定运行数据库)

controller访问model方式如下所示

root$ cat app/controllers/test_controller.rb 
class TestController < ApplicationController
  def index
    @ms = TModel.find(params[:id])
  end
end

 view显示查询结果

root$ cat app/views/test/index.html.erb 
<h1>Test#index</h1>
<p>Find me in app/views/test/index.html.erb</p>
<%= debug(@ms) %>

 启动服务器,请求测试如下

root$ curl http://127.0.0.1:3000/test/index/1
<h1>Test#index</h1>
<p>Find me in app/views/test/index.html.erb</p>
<pre class='debug_dump'>--- !ruby/object:TModel
attributes:
&nbsp; id: 1
&nbsp; name: ciaos1
&nbsp; passwd: passwd
&nbsp; age: 25
&nbsp; profile: Find the Next
&nbsp; text: 
&nbsp; admin: f
&nbsp; created_at: '2013-05-04 12:27:48'
&nbsp; updated_at: '2013-05-04 12:50:05'
&nbsp; tel: 
attributes_cache: {}
</pre>
 数据表一对多关联示例如下
rails generate model Hotel name:string address:string
rails generate model Picture hotel_id:integer url:string
D:\website\demo1>rake db:migrate
 编辑model的association如下
class Hotel < ActiveRecord::Base
  attr_accessible :address, :name
  
  has_many :pictures
end

class HotelPictures < ActiveRecord::Base
  attr_accessible :hotel_id, :url
  
  belongs_to :hotel
end
 使用
> h=Hotel.create(:name=>"Zhong Huang",:address=>"Beijing")
> h
=> #<Hotel id: 1, name: "Zhong Huang", address: "Beijing", created_at: "2013-07-05 03:35:42", updated_at: "2013-07-05 03:35:42">
> p=Picture.create(:hotel_id=>1,:url=>"a.jpg")
> h.pictures
=> [#<Picture id: 1, hotel_id: 1, url: "a.jpg", created_at: "2013-07-05 03:36:16", updated_at: "2013-07-05 03:36:16">]
分享到:
评论

相关推荐

    Rails3常用命令行命令

    rails destroy model article ``` 创建Controller也很简单,比如创建一个名为products的Controller,并带有index动作: ```bash rails g controller products index ``` 这会生成一个`products_controller.rb`...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    Ruby on Rails入门例子

    Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本篇将通过一个入门实例,深入探讨Rails的基本概念和核心...

    web开发之rails最新调试通过购物车代码

    在Web开发领域,Ruby on Rails(简称Rails)是一种流行的开源框架,它基于MVC(Model-View-Controller)架构模式,用于快速构建高效、可维护的Web应用。本压缩包中的"web开发之rails最新调试通过购物车代码"是关于...

    rails_model_test_hello_world

    自述文件版本和设置$ ruby -vruby 2.6.1p33 (2019-01-30 revision 66950) [x86_64-darwin18]$ rails -... $ rails new rails_model_test_hello_world -T -m ~/rtfb_template.rb$ cd rails_model_test_hello_world$ rail

    rails2-sample

    Ruby on Rails是一种基于Ruby语言的开源Web应用框架,遵循MVC(Model-View-Controller)设计模式。它以其优雅的语法、高效的开发速度以及“约定优于配置”的理念而闻名于世,极大地简化了Web应用的开发过程。此外,...

    Ruby+for+Rails

    Ruby on Rails(简称Rails)是基于Ruby语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。 1. **Ruby的安装** 在不同的操作系统上,安装Ruby的方式有所不同。在...

    Rails 3 in Action

    3. **MVC架构**:Rails采用Model-View-Controller架构,书中详细解释了模型(Model)、视图(View)和控制器(Controller)之间的交互与职责。 4. **路由**:Rails的路由系统允许灵活地定义URL到控制器动作的映射,...

    rails2.3.2

    Rails 作为 Ruby 的主要应用框架之一,两者密切相关。 在压缩包的文件名称列表中,只有一个条目 "rails",这可能意味着压缩包内包含了 Rails 框架的核心文件,如 gemspec 文件、库文件、初始化脚本等。开发者可以...

    rails指南 中文版

    Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,强调“约定优于配置”(Conventions over Configuration)和“Don't Repeat Yourself”(DRY,不要...

    rails查询学习笔记

    1. **ActiveRecord查询接口**:这是Rails中最基础的查询方式,如`Model.find(id)`用于根据ID获取记录,`Model.where(condition)`用于根据条件筛选记录,`Model.order(column)`用于排序,`Model.includes(:...

    Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码。

    标题中的“Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码”表明这是一个关于使用Ruby on Rails框架进行敏捷Web开发的示例项目,名为Depot。Ruby on Rails(简称Rails)是一个开源的Web应用程序框架,它...

    Rails 101S

    ### Rails 101S: 初学者必备的Ruby on Rails 宝典 #### Introduction: 深入了解Ruby on Rails 《Rails 101S》是一本为Ruby on Rails初学者准备的手册,旨在帮助新手快速入门并掌握基本的开发技能。本手册将从最...

    Ruby on Rails实例开发

    接着,使用Rails的生成器创建控制器、模型和视图,如`rails generate controller`或`rails generate model`。然后,配置数据库连接,编写数据库迁移(migrations)以定义数据表结构,执行`rake db:migrate`来应用...

    centOS Rails3环境搭建

    rails generate model article rails destroy model article ``` - **控制器创建**: ```bash rails generate controller products index ``` - **数据库迁移**:创建数据库和执行迁移: ```bash rake db:...

    Ruby on Rails实践

    在Ruby on Rails实践中,我们首先会接触到MVC(Model-View-Controller)架构模式。Model代表数据模型,负责业务逻辑和数据库交互;View负责展示数据,通常由HTML、CSS和JavaScript组成;Controller处理用户请求,并...

    中文版rails教程

    1. **模型(Model)**:模型是应用的核心,负责处理数据和业务逻辑。ActiveRecord是Rails的ORM系统,它将数据库表与Ruby类绑定,通过ActiveRecord对象操作数据。 2. **视图(View)**:视图负责呈现用户界面,通常...

    rails 项目起步示例

    Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 ...

    提升Ruby on Rails性能的几个解决方案

    Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。 ActiveRecord 的灵活让你再也不用配置繁琐的 Hibernate 即可...

    rails敏捷开发的购物车系统

    模型(Model)负责处理业务逻辑和数据存储,视图(View)用于展示用户界面,而控制器(Controller)作为模型和视图之间的桥梁,处理用户输入并协调二者之间的交互。在购物车系统中,模型可能包括商品、购物车、订单...

Global site tag (gtag.js) - Google Analytics