2010-12-08 12 views
276

私は新しいモデルを生成しようとしており、別のモデルのIDを参照する構文を忘れています。私は自分自身でそれを見ていますが、Ruby on Railsのドキュメントリンクの中で、最終的なソースを見つける方法を理解していません。Ruby on Railsはモデルフィールドを生成します:type - field:typeのオプションは何ですか?

$ rails g model Item name:string description:text(ここではreference:productまたはreferences:product)。しかし、より良い質問はです。またはどうすれば簡単にこのような愚かさを簡単に探すことができますか?

注:私はこれらのいずれかのオプションを間違えて入力しては私移行を実行した場合、その後のRuby on Railsは完全に私のデータベースを台無しにすることを、ハードな方法を学んだ...とrake db:rollbackは、このようなscrewupsに対して無力です。私は何かを理解していないと確信していますが、私がするまで... rails g modelによって返された「詳細な」情報はまだ私に傷を残します...

+0

について:uniqと:インデックスフィールドのオプションは? "rails gモデルタイトルボディ:text tracking_id:integer:uniq"のように。私はそれらのドキュメントを見つけることができませんでした。それ以上はありますか? – Kangur

+10

'rails generate model --help' – Dennis

+1

バージョンコントロールを使用すると、生成されたファイルを簡単にロールバックすることができます。もし問題がデータベースにあれば、いつでもdb:schema:load –

答えて

436
:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp, 
:time, :date, :binary, :boolean, :references 

table definitionsセクションを参照してください。

+13

えええええええええええええええええええええええええええええええええんかんじゅうごほうじんかんじょう: – Meltemi

+0

例: 'rails generate model曲名:string mp3url:string description:text' - 文字列型のプロパティ名を持つモデルSongを作成します。 –

+49

質問に全く答えません。 – MikeEL

7

$ rails g model Item name:string description:text product:references

私はあまりにも使用するガイドが難しくました。理解しやすいですが、私が探しているものを見つけるのは難しいです。

また、rails generateコマンドを実行する一時プロジェクトがあります。その後、私は彼らが私の実際のプロジェクトでそれを実行する作業を取得します。上記コードの

リファレンス:http://guides.rubyonrails.org/getting_started.html#associating-models

180

レールモデルジェネレータにルビーを使用し、他の参照モデルを作成するには

$ rails g model wheel car:references 

APP /モデルを生成/ wheel.rb

class Wheel < ActiveRecord::Base 
    belongs_to :car 
end 

そして

は、次の移行を追加します。

class CreateWheels < ActiveRecord::Migration 
    def self.up 
    create_table :wheels do |t| 
     t.references :car 

     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :wheels 
    end 
end 

移行を実行すると、次のことがあなたのデシベル/ schema.rbになってしまいます:ドキュメントについては

$ rake db:migrate 

create_table "wheels", :force => true do |t| 
    t.integer "car_id" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
end 

、レール発電機の出発点は、API Documentationにあなたを指しRuby on Rails: A Guide to The Rails Command Lineです使用可能なフィールドタイプの詳細については、

+3

ですが、これはこの質問の答えです。 +1 – omninonsense

3

このコマンドを書くときは、テキストを大文字にしないでください。

を投稿しません:たとえば

rails g model product title:string description:text image_url:string price:decimal 

は書き込まないでください:

rails g Model product title:string description:text image_url:string price:decimal 

少なくともそれは私にとって問題でした。

+0

待ちますか?!?何?私は常にモデル名を大文字にします!どのような「問題」がありますか? – Meltemi

+2

私はあなたのモデルの名前については言及していませんが、名前は 'モデル'です。 私はこのようなモデルを作成しようとしました: rails gモデルの製品タイトル:文字列 と得点:発電機モデルを見つけることができませんでした。 だから私はこのように試しました: レールgモデルの製品タイトル:文字列 それが働いた。 –

+1

ああ。 b4に遭遇していなかった。良いヒント! – Meltemi

0

私は同じ問題がありましたが、私のコードは少し異なりました。

def new @project = Project.new end

そして、私のフォームはこのように見えた:完全に正しかったので、私はそれを把握する方法を知りませんでした

<%= form_for @project do |f| %> and so on.... <% end %>

最後に、<%= form-for @projectの後にurl: { projects: :create }を追加するだけです。

+0

これは良い答えかもしれませんが、フィールド型( ':integer'、':string'など)に関するOPに渡します。 – Meltemi

関連する問題