Ruby on Rails генерирует поле модели: тип - каковы варианты для поля: тип?

286

Я знаю, что это глупый вопрос, но, как и многое другое о обучении Rails, я считаю, что документация невероятно сложно найти/ориентироваться.

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

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

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

  • 0
    А как насчет параметров поля uniq и: index? Как в "rails g body title модели: text tracking_id: integer: uniq". Я не мог найти документацию для них. Есть еще?
  • 11
    rails generate model --help
Показать ещё 2 комментария
Теги:
generator
activerecord

6 ответов

449
Лучший ответ
:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp,
:time, :date, :binary, :boolean, :references

См. раздел определения таблиц.

  • 13
    хм ... нет упоминания :reference или :references в вашем ответе или объяснение того, как передать его генераторам по предоставленной вами ссылке?!?
  • 0
    Пример: rails generate model Song name:string mp3url:string description:text создаст модель песни с именем свойства с типом string и т.д ..
Показать ещё 11 комментариев
186

Чтобы создать модель, которая ссылается на другую, используйте генератор модели рельсов:

$ rails g model wheel car:references

Это создает приложение /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

Что касается документации, отправной точкой для генераторов рельсов является Ruby on Rails: руководство по командной строке Rails, которое указывает на Документация API для получения дополнительных сведений о доступных типах полей.

  • 4
    немного устарел с комментарием, но это и есть ответ на этот вопрос. +1
7

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

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

Кроме того, у меня есть проекты temp, в которых я запускаю команды 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

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

  • 0
    Подождите?!? Какие? Я постоянно пишу названия своих моделей! Какие "проблемы" вы видите?
  • 2
    Я говорю не о названии вашей модели, а о названии «Модель». Я попытался создать такую модель: rails g Название продукта Model: string и получил: Не удалось найти модель генератора. поэтому я попробовал это так: rails g название модели продукта: строка, и это сработало.
Показать ещё 2 комментария
3

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

  • 0
    2-я ссылка ведет к: model_name:references . Спасибо!
0

Немного поздно! У меня была такая же проблема, но мой код был немного другим.

def new @project = Project.new end

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

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

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

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

Я надеюсь, что это поможет кому-нибудь!

  • 0
    Это может быть хорошим ответом, но я не уверен, как это относится к OP, который касается типов полей ( :integer :string и т. Д.).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню