【问题标题】:Is Ruby on Rails appropriate for what I am trying to achieve? Creating CRUD scaffolds for existing MySQL databaseRuby on Rails 是否适合我想要实现的目标?为现有 MySQL 数据库创建 CRUD 脚手架
【发布时间】:2012-04-25 03:03:02
【问题描述】:

我之前创建了仅限本地主机的 RoR 应用程序,其中模型是手动创建的,并为它们生成了脚手架,为数据创建了一个漂亮、快速、易于使用的 CRUD 界面。我在 Netbeans 中使用 SQLite 做到了这一点。

现在我有一个带有 MySQL 数据库的服务器,并希望创建一个快速的 CRUD 应用程序,它提供了一种快速简便的方法来查看数据库中的数据并提供一些选项,例如编辑/删除。由于我的数据库已经由 MySQL 指定,这似乎打开了大量的蠕虫,与我的 Netbeans 冒险在 RoR 中使用脚手架生成的 crud web 应用程序相比,这使得这变得不那么直接了。

我已经研究过转储我当前数据库的模式,db:raking 它,然后生成脚手架。这是正确的方法吗?我还阅读了有关魔术模型生成器的信息。这是将 MySQL 数据库转换为 RoR 模型格式的最佳方法吗? http://magicmodels.rubyforge.org/magic_model_generator/

我想我要问的是,对于我的数据库结构,RoR 是否适合模拟一个快速 CRUD 网络应用程序,以便可以对数据进行基本操作?

下面是我的 MySQL 数据库的 schema.rb。 userId 和 attachmentId 有外键关系。

ActiveRecord::Schema.define(:version => 0) do

  create_table "attachments", :primary_key => "attachmentId", :force => true do |t|
    t.string "attachmentName",               :null => false
    t.string "fileType",       :limit => 30, :null => false
    t.binary "content",                      :null => false
    t.string "printCode"
  end

  create_table "emails", :primary_key => "emailId", :force => true do |t|
    t.integer "userId",       :limit => 11,   :null => false
    t.integer "attachmentId", :limit => 11,   :null => false
    t.string  "body",         :limit => 1000
    t.string  "subject"
  end

  add_index "emails", ["attachmentId"], :name => "attachmentId", :unique => true
  add_index "emails", ["userId"], :name => "userId"

  create_table "printUsers", :primary_key => "userId", :force => true do |t|
    t.string "email", :null => false
  end

  add_index "printUsers", ["email"], :name => "email", :unique => true

end

【问题讨论】:

  • 我对你的问题感到困惑。如果数据库已经存在,为什么要再次创建它?只需创建活动记录模型并指定它们的关系。每个 Active 记录模型将使用 AR 反射功能自动计算出特定字段。

标签: mysql ruby-on-rails crud


【解决方案1】:

似乎有几种方法可以在现有数据库中使用 Rails。请参阅Connect rails to existing postgres DB - models not seen by console and controllers,尤其是其中的链接:http://magicmodels.rubyforge.org/magic_model_generator/http://blog.aizatto.com/2007/05/21/activerecord-without-rails/

很高兴指出您不需要将 ActiveRecord 与 rails 一起使用。您的模型可以是任何对象,因此使用sequelarel 之类的东西可能更容易访问数据。

另一种方法是将数据从现有数据库迁移到您通过构建模型生成的新数据库中。

【讨论】:

  • 好的,我已经通过rails test -d mysql 创建了我的应用程序。我还编辑了我的database.yml 文件以包含指向我的 MySQL 数据库的链接。所以我现在想创建模型并使用魔法模型生成器将它们的所有关联从数据库复制到模型中?从那我应该能够制作脚手架,对吗?
  • 看起来该项目有一段时间没有更新(github.com/drnic/magic_model_generator)所以我不确定它在 Rails 3 中的工作情况。既然你打破了惯例,可能是时候丢掉脚手架了,并生成每个组件:测试(你从这里开始,对吗?),路由,视图,模型,(如果你手动连接它,你可以跳过数据库迁移),控制器。
  • 这是一组很好的幻灯片,展示了将 ActiveRecord 连接到旧数据库的各种方法:slideshare.net/napcs/rails-and-legacy-databases-railsconf-2009
  • 我现在已经放弃使用 RoR 了。感谢您的回复,我确信它们是运行此程序的不错资源,因此我将您的回复标记为答案。
  • “魔法模型生成器”gem 仅适用于 Rails 2。对于那些在未来发现这一点的人,这里有一个更全面的 gem-solution,它适用于创建脚手架命令的现代版本的 rails -github.com/frenesim/schema_to_scaffold
猜你喜欢
  • 2010-09-20
  • 2018-07-31
  • 2022-01-11
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多