Ответ 1
:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp,
:time, :date, :binary, :boolean, :references
См. раздел определения таблиц.
Я пытаюсь создать новую модель и забыть синтаксис для ссылки на другой идентификатор модели. Я бы сам посмотрел, но я не нашел среди всех моих ссылок на документацию по Ruby on Rails, как найти точный источник.
$ rails g model Item name:string description:text
(и здесь либо reference:product
либо references:product
). Но лучший вопрос заключается в том, где или как я могу легко найти эту глупость в будущем?
Примечание: я усвоил трудный путь, что если я ошибусь при вводе одного из этих вариантов и запущу свою миграцию, то Ruby on Rails полностью испортит мою базу данных... и rake db:rollback
бессильно против таких ошибок. Я уверен, что просто что-то не понимаю, но пока я не понимаю... "подробная" информация, возвращаемая rails g model
все еще оставляет у меня царапины...
:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp,
:time, :date, :binary, :boolean, :references
См. раздел определения таблиц.
Чтобы создать модель, которая ссылается на другую, используйте генератор моделей 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 для получения дополнительной информации о доступных типах полей.
$ rails g model Item name:string description:text product:references
Я тоже нашел, что руководства трудно использовать. Легко понять, но трудно найти то, что я ищу.
Кроме того, у меня есть проекты temp, в которых я запускаю команды rails generate
. Затем, как только я их заработаю, я запускаю его в своем реальном проекте.
Ссылка на приведенный выше код: http://guides.rubyonrails.org/getting_started.html#associating-models
http://guides.rubyonrails.org должен быть хорошим сайтом, если вы пытаетесь разобраться с основными вещами в Ruby on Rails.
Вот ссылка для связывания моделей при их создании: http://guides.rubyonrails.org/getting_started.html#associating-models
Помните, что не пишите эту команду при написании этой команды. Например:
Пишите:
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
сработал для меня.
$ rails g model Название элемента: описание строки: текст
Вы забыли добавить ссылки на товары для товара.
Чтобы добавить ссылку на товар в модель изделия, выполните следующие действия.
$ rails g миграция Продукт AddProductToItems: ссылки $ rails db: migrate
Тогда он будет генерировать так
class AddProductToItems < ActiveRecord::Migration[5.2]
def change
add_reference :items, :product, foreign_key: true
end
end
Наконец добавлены ссылки на товары для модели товара
В ROR очень просто создать модель, которая ссылается на другие.
рельсы g модель Имя элемента: описание строки: текстовое изделие: ссылки
Этот код добавит столбец product_id в таблицу Item.