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


Answers

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

$ 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

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

Question

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

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

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




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

Пишите:

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

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




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

def new @project = Project.new end

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

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

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

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




Links