Ruby on Rails генерирует поле модели: тип - каковы варианты для поля: тип? - PullRequest
306 голосов
/ 08 декабря 2010

Я пытаюсь сгенерировать новую модель и забыть синтаксис ссылки на идентификатор другой модели. Я бы сам посмотрел, но я не нашел среди всех моих ссылок на документацию по Ruby on Rails, как найти точный источник.

$ rails g model Item name:string description:text (и здесь либо reference:product, либо references:product). Но лучший вопрос - , где или , как можно легко найти этот тип глупости в будущем?

Примечание: я усвоил трудный путь, что если я неправильно наберу одну из этих опций и выполню миграцию , то Ruby on Rails полностью испортит мою базу данных ... и rake db:rollback бессильна такие провалы Я уверен, что просто что-то не понимаю, но пока я не понимаю ... "подробная" информация, возвращаемая rails g model, все еще оставляет у меня царапины ...

Ответы [ 6 ]

470 голосов
/ 08 декабря 2010
:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp,
:time, :date, :binary, :boolean, :references

См. Определение таблицы , раздел.

187 голосов
/ 13 июля 2011

Чтобы создать модель, которая ссылается на другую, используйте генератор моделей 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 является Ruby on Rails: руководство по командной строке Rails , которое указывает на Документация API для получения дополнительной информации о доступных типах полей.

7 голосов
/ 20 июня 2011

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

Я также обнаружил, что направляющие трудно использовать. Легко понять, но трудно найти то, что я ищу.

Также у меня есть временные проекты, в которых я запускаю команды rails generate. Затем, как только я заставил их работать, я запустил их на своем реальном проекте.

Ссылка для вышеуказанного кода: http://guides.rubyonrails.org/getting_started.html#associating-models

3 голосов
/ 22 августа 2012

Помните, что при написании этой команды не пишите текст с большой буквы.Например:

Пиши:

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

По крайней мере, для меня это была проблема.

3 голосов
/ 08 декабря 2010

http://guides.rubyonrails.org должен быть хорошим сайтом, если вы пытаетесь разобраться с основными вещами в Ruby on Rails.

Вот ссылка на ассоциированные модели при их создании: http://guides.rubyonrails.org/getting_started.html#associating-models

0 голосов
/ 12 октября 2016

У меня была такая же проблема, но мой код немного отличался.

def new @project = Project.new end

И моя форма выглядела так:

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

Это было совершенно правильно, поэтому я не знал, как это выяснить.

Наконец, просто добавив url: { projects: :create } после того, как <%= form-for @project сработал для меня.

...