2010-12-30 12 views
10

Jestem nowy w Ruby i Rails i używam Rails 3 w Ruby 1.9.2.Przekazywanie dodatkowych parametrów do Railsów Generowanie modelu?

Chcę utworzyć model, więc przyjrzałem się documentation, aby uzyskać definicję tabeli, którą chcę, ale zastanawiam się, jak przekazałbym to do modelu generowania szyn?

Zasadniczo chcę to:

title :string, :null => false 
details :text, :limit => 30000, :null => false 

Ale mogę tylko podać nazwę i typ kolumny, nie: zerowy, czyli graniczną.

Próbowałem rails model generate Article (title:string, :null => false) (details:text, :limit=>30000, :null => false) ale to po prostu mówi mi, że (jest nieoczekiwany znak

Gdybym tylko wygenerować model z tytułu:. Dane wyrażenie: tekstowy, plik article.rb jest pusty, przypuszczalnie dlatego, że jest czytane z DB tak czy inaczej:

Ponieważ wszystko w Rails ma być a) proste i b) magiczne, zastanawiam się, czy po prostu coś mi brakuje i muszę przekazać coś w stylu mieszania, aby wygenerować model? Czy naprawdę muszę ręcznie edytować plik .rb migracji?

+1

Trzeba go edytować ręcznie. – Heikki

Odpowiedz

8

Tak, musisz ręcznie edytować plik migracji dla tego. Generator właśnie oferuje punkt wyjścia, nie robi wszystkiego.

Wykonanie tego w pliku migracji jest bardzo łatwe.

create_table :articles do |t| 
    t.string :title, :null => false 
    t.text :details, :limit => 3000, :null => false 
end 
+1

Zajęło mi to na zawsze odnalezienie. Szukałem od podstaw, jak wykonać ograniczenie w moim 'rusztowaniu z szynami '... dziękuję! – Ryan

7

Spróbuj kilka sztuczek: belongs_to i indeks

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

To stworzy:

class User < ActiveRecord::Base 
    belongs_to :group 
    attr_accessible :username 
end 
19

Jak się okazuje, limit może (obecnie) zostaną określone w wierszu poleceń:

rails generate model user pseudo:string{30} 

Źródło:usage doc from Rails GitHub project

Ustawienie domyślne jednak nadal wymaga ręcznej edycji migracji.

Aby uzyskać dodatkowe opcje migracji, zobacz the official Rails migrations guide.

+0

WOW! ta odpowiedź jest słuszna. Jak mogę wyświetlić dokument z poziomu wiersza poleceń? model pomocy szyn? – zx1986

+0

@ zx1986 'bin/rails g model' powinno załatwić sprawę –

1

Możesz przekazać "null".to_sym => false w swoim modelu szyny generowania modelu.
Na przykład:

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

To będzie włączyć "null"w symbol, pozwalając działać prawidłowo, gdy uruchomiony db:migrate

Powiązane problemy