Ruby on Railsはモデルfield:typeを生成します-field:typeのオプションは何ですか?


308

新しいモデルを生成し、別のモデルのIDを参照するための構文を忘れようとしています。自分で調べますが、Ruby on Railsのすべてのドキュメントリンクの中で、最終的なソースを見つける方法はわかりません。

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

注:これらのオプションのいずれかを誤って入力して移行実行すると、 Ruby on Railsがデータベースを完全にrake db:rollback台無しにしてしまい、そのような台無しに対して無力になるという難しい方法を学びました。私は何かを理解していないと確信していますが、私が理解するまでは...によって返された「詳細な」情報はrails g modelまだ私を引っ掻き続けています...


:uniqと:indexフィールドオプションはどうですか?「rails gモデルタイトルbody:text tracking_id:integer:uniq」のように。それらのドキュメントは見つかりませんでした。これ以上ありますか?
カングル2013

11
rails generate model --help
デニス

1
バージョン管理を使用すると、生成されたファイルを簡単にロールバックできます。問題がデータベースにある場合は、まあ、いつでもdb:schema:loadを実行できます
Hector Ordonez

1
よくそれは14万回以上見られ、今日の時点で243人がそれが有用であると感じたので、決してばかげた質問ではありません:)
BKSpurgeon

回答:


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

テーブル定義のセクションを参照してください。


13
うーん...のは言及しない:referenceか、:referencesあなたの答えで、またはあなたが提供されたリンクに発電機にそれを渡す方法の説明?!?
Meltemi、

53
それは質問にまったく答えません。
MikeEL

1
これを答えとして選択しましたが、:referencesもオプションであることを知っています。
Meltemi 2011

14
これらの列タイプを実際に定義するドキュメントはありますか?たとえば、どのようにstring違いますtextか?
Grant Birchmeier、2012

3
@Kangur the uniqおよびindexサフィックス(およびすべてのタイプ)は、の使用法に記載されていますrails generate model。実行rails g modelして、使用法のドキュメントを確認します。
Dennis

188

別のモデルを参照するモデルを作成するには、Ruby on Railsモデルジェネレーターを使用します。

$ rails g model wheel car:references

それはapp / models / 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

移行を実行すると、次のものがdb / 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

ドキュメントについては、レール発電機のための開始点があるRailsのコマンドラインへのAガイド:Ruby on Railsににあなたを指すAPIドキュメント利用できるフィールドタイプの詳細のために。


4
コメントで少し古くなっていますがこれがこの質問の答えです。+1
omn​​inonsense 2011

7

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

私もガイドが使いづらかったです。理解しやすいが、私が探しているものを見つけるのは難しい。

また、rails generateコマンドを実行する一時プロジェクトがあります。次に、それらを動作させると、実際のプロジェクトで実行します。

上記のコードのリファレンス:http : //guides.rubyonrails.org/getting_started.html#associating-models


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

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


待つ?!?何?私はいつもモデル名を大文字にします!どんな「問題」を見ていますか?
Meltemi 2012

2
モデルの名前ではなく、「モデル」の名前です。次のようなモデルを作成しようとしました:rails g Model product title:stringおよびgot:ジェネレーターモデルが見つかりませんでした。だから私はこのように試してみました:rails gモデル製品タイトル:文字列とそれは働いた。
Victor Augusto

1
ああ。そのb4に遭遇していません。良いヒントです!
Meltemi 2012

2
(問題となっているのはモデル名ではなく、modelジェネレーターを指す言葉rails g model Product …です。)
Asherah


0

RORでは、他を参照するモデルを作成するのは非常に簡単です。

rails gモデルアイテム名:文字列説明:テキスト製品:参照

このコードは、Itemテーブルに「product_id」列を追加します


0

モデルの作成中に言及できるデータ型はたくさんありますが、いくつか例を示します。

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

構文:

field_type:data_type

0

同じ問題が発生しましたが、コードが少し異なりました。

def new
 @project = Project.new
end

そして、私のフォームは次のようになりました:

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

それは完全に正しいので、それを理解する方法がわかりませんでした。

最後に、追加するだけ

url: { projects: :create }

<%= form-for @project ...%>

私のために働いた。


これは、良い答えかもしれないが、私はそれがフィールドタイプ(約あるOPにどのように関連するかわからない:integer:stringなど)。
Meltemi 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.