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