【问题标题】:Does rails let you generate a HABTM migration from the command line?Rails 是否允许您从命令行生成 HABTM 迁移?
【发布时间】:2011-06-17 06:03:09
【问题描述】:

每当我不得不在 Rails 中执行 HABTM 时,我总是想知道是否可以从命令行生成所需的迁移。

我希望通过这样做来节省时间:

rails g migration tracks_podcasts tracks:references podcasts:references id:false

上面的代码不起作用,它的几个变体也不起作用(有和没有 id:false 指令)

【问题讨论】:

标签: ruby-on-rails rails-migrations


【解决方案1】:

https://github.com/zealot128/ruby-habtm-generator 现在是一个不错的选择。

例子:

rails g habtm user post

【讨论】:

  • 请注意从 rails 4 开始的命名约定 - 尚未在 ruby​​-habtm-generator 中实现:如果您的表共享一个公共前缀,它只会在开头出现一次。例如,表“catalog_categories”和“catalog_products”生成连接表名称“catalog_categories_products”。 api.rubyonrails.org/classes/ActiveRecord/Associations/…
【解决方案2】:

根据 rails 文档,这应该可以,但您需要将“references”替换为“integer”。 'references' 不是有效的数据类型。并摆脱 id:false 条目。引用和 :id => false 应在生成后的迁移中指定。您基本上会生成一个包含所有所需字段的基本迁移,然后打开迁移并对其进行修改以满足您的规范。

Usage:
  rails generate migration NAME [field:type field:type] [options]

Options:
  -o, --orm=NAME  # Orm to be invoked
                  # Default: active_record

Runtime options:
  -f, [--force]    # Overwrite files that already exist
  -p, [--pretend]  # Run but do not make any changes
  -q, [--quiet]    # Supress status output
  -s, [--skip]     # Skip files that already exist

Description:
    Create rails files for migration generator.

【讨论】:

  • references 是一个可以使用的有效值,t.references :foo 转换为 t.integer :foo_id。事实上,您可以创建自己的类型,如设计模型迁移和 t.timestamps 所示
  • 我支持集群的评论。如果您想表达外键关系,则“参考”是要走的路。 edgeguides.rubyonrails.org/…
猜你喜欢
  • 2013-12-14
  • 1970-01-01
  • 2013-02-16
  • 2011-07-27
  • 2013-05-10
  • 2016-08-02
  • 2020-10-03
  • 2011-05-02
  • 1970-01-01
相关资源
最近更新 更多