Передача дополнительных параметров в Rails Generate Model? - PullRequest
11 голосов
/ 30 декабря 2010

Я новичок в Ruby и Rails и использую Rails 3 на Ruby 1.9.2.

Я хочу создать модель, поэтому я посмотрел документацию , чтобыполучить определение таблицы, которую я хочу, но мне интересно, как я передам это рельсу генерировать модель?

В основном я хочу это:

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), но это просто говорит мне (неожиданный токен.

Если я просто сгенерирую модель с заголовком: строкадетали: текст, затем файл article.rb пуст, предположительно потому, что он все равно читается из БД.

Поскольку все в Rails должно быть а) простым и б) волшебным, мне интересно,я просто что-то упустил и должен передать что-то вроде хеша для генерации модели?Или мне действительно нужно вручную редактировать миграционный файл .rb?

Ответы [ 4 ]

19 голосов
/ 08 октября 2013

Как оказалось, предел (сейчас) можно указать в командной строке:

rails generate model user pseudo:string{30}

Источник: документ об использовании из проекта Rails GitHub

Установка по умолчанию, однако, все еще требует редактирования миграции вручную.

Дополнительные параметры миграции см. В официальном руководстве по миграции Rails .

8 голосов
/ 30 декабря 2010

Да, вы должны вручную отредактировать файл миграции для этого. Генератор просто предлагает отправную точку, он не делает все.

В любом случае сделать это в файле миграции очень просто.

create_table :articles do |t|
  t.string :title, :null => false
  t.text   :details, :limit => 3000, :null => false
end
7 голосов
/ 07 марта 2013

Попробуйте несколько хитростей: own_to и index

rails g model User username:string:index group:belongs_to

Это создаст:

class User < ActiveRecord::Base
  belongs_to :group
  attr_accessible :username
end
1 голос
/ 07 июня 2016

Вы можете передать "null".to_sym => false в ваших рельсах, генерирующих модель .
Например:

rails g model client 'ClientName, "null".to_sym => false:string{100}'

Это превратит "ноль" всимвол, позволяющий ему нормально работать при работе db:migrate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...