将其他参数传递给Rails生成模型?
我是Ruby和Rails的新手,我在Ruby 1.9.2上运行Rails 3。
我想创建一个模型,所以我查看了文档以获取我想要的表定义,但我想知道如何将它传递给rails generate model?
基本上我想要这个:
title :string, :null => false details :text, :limit => 30000, :null => false
但我只能指定列名和类型,而不是:null或:limit。
我试过rails model generate Article (title:string, :null => false) (details:text, :limit=>30000, :null => false)
但这只是告诉我(是一个意外的标记。
如果我只是生成带有title:string details:text的模型,那么article.rb文件是空的,大概是因为它无论如何都是从DB中读取的。
由于Rails中的所有内容都应该是a)简单和b)魔术,我想知道我是否只是缺少某些内容并且必须传递类似哈希的内容来生成模型? 或者我是否真的必须手动编辑迁移.rb文件?
是的,您必须手动编辑迁移文件。 发电机只是提供一个起点,它不能做任何事情。
无论如何,在迁移文件中执行此操作非常简单。
create_table :articles do |t| t.string :title, :null => false t.text :details, :limit => 3000, :null => false end
事实certificate,可以(现在)在命令行中指定限制:
rails generate model user pseudo:string{30}
来源: Rails GitHub项目的使用文档
但是,设置默认值仍然需要手动编辑迁移。
有关其他迁移选项,请参阅官方Rails迁移指南 。
尝试一些技巧:belongs_to和index
rails g model User username:string:index group:belongs_to
这将创建:
class User < ActiveRecord::Base belongs_to :group attr_accessible :username end
您可以在rails generate模型中传递"null".to_sym => false
。
例如:
rails g model client 'ClientName, "null".to_sym => false:string{100}'
这会将“null”变为符号,允许它在运行db:migrate
时正常运行