快速业务通道

使用ActiveScaffold增强Ruby on Rails的功能 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
s, :email, :unique => true  end  def self.down   drop_table :users  end end class AddProjects < ActiveRecord::Migration  def self.up   create_table :projects do |t|    t.column :name, :string, :limit => 50, :null => false    t.column :organization_id, :integer, :null => false   end  end  def self.down   drop_table :projects  end end class AddProjectsUsers < ActiveRecord::Migration  def self.up   create_table :projects_users do |t|    t.column :project_id, :integer, :null => false    t.column :user_id, :integer, :null => false    t.column :role_type, :integer, :null => false   end  end  def self.down   drop_table :projects_users  end end

使用ActiveScaffold增强Ruby on Rails的功能(3)

时间:2011-11-29 Mike Perham

清单 3. 模型

class User < ActiveRecord::Base
  belongs_to :organization
end
class Organization < ActiveRecord::Base
 has_many :projects
 has_many :users
end
class Project < ActiveRecord::Base
 belongs_to :organization
 has_many :projects_users
 has_many :administrators, :through => :projects_users, :source => :user,
      :conditions => "projects_users.role_type = 3"
 has_many :managers, :through => :projects_users, :source => :user,
      :conditions => "projects_users.role_type = 2"
 has_many :workers, :through => :projects_users, :source => :user,
      :conditions => "projects_users.role_type = 1"
end
class ProjectsUser < ActiveRecord::Base
 belongs_to :project
 belongs_to :user
end

User、Organization 和 Project 表都代表域中的传统实体,而 ProjectsUsers 表则会在 Project 和 User 实体之间增加一个多对多的关系。在本例中,它会添加一个 role_type 属性,它代表用户在项 目中所扮演的角色。用户可能是工人、经理和/或管理员。

在模型上创建任何用户界面所需要的关 键信息都是要理解模型之间的关系。通过在模型中声明 has_many 和 belongs_to,就在它们之间定义了 一种特定类型的关系。一旦 ActiveScaffold 知道了这些关系,就可以提供一个用户界面以一种用户可以 理解的方式对这些对象进行操作。在这种情况下,ActiveScaffold 就可以确定某个 Project 是由某个 Organization 所有的,因此可以相应地调整用户界面。如果您更改了这种关系,则用户界面就可以相应 地变化,无需开发人员更改 UI。

边注:由于 Rails 迁移框架中存在某种限制,使清单 2 中的迁 移无法使用外键。为了确保数据一致性,强烈推荐使用这些外键。Redhill Consulting 提供了一个很好 的 foreign_key_migrations 插件,它增加了在 Rail 数据库迁移框架中对外键的支持;有关更多信息, 请参看 参考资料 中的链接。

Rails scaffold

现在我们已经充实了模型,接下来可以在上 面放一个 Web 界面。Rail 提供了一个 “scaffold” 生成器,它可以为某个给定模型生成一 组基本的 CRUD 页面。下面的命令用来为这个模型创建标准的 Ruby scaffold:即一个具有一组 CRUD 方 法和一组对应的模型 HTML 视图的控件。

清单 4. 生成标准的 Rails scaffold

script/generate scaffold user
script/generate scaffold organization

使用ActiveScaffold增强Ruby on Rails的功能(4)

时间:2011-11-29 Mike Perham

scaffol

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号