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


308

Я намагаюся генерувати нову модель і забуваю синтаксис для посилання на ідентифікатор іншої моделі. Я би сам роздивився це, але серед усіх своїх посилань на документацію 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 title body: text track_id: integer: uniq". Я не зміг знайти документацію для них. Чи є ще?
Кангур

11
rails generate model --help
Денніс

1
Використання контролю версій забезпечить вам простий спосіб відкатати всі створені файли. А якщо проблема в базі даних ... ну, ви завжди можете зробити db: schema: load
Гектор Ордонез

1
добре, це було помічено понад 140 тис. разів, і сьогодні 243 люди вважають це корисним, тому це не дурне питання жодним чином :)
BKSpurgeon

Відповіді:


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

Дивіться розділ визначення таблиць .


13
хм ... ні згадки, :referenceні :referencesу вашій відповіді, ні пояснення, як передати її генераторам у наданому вами посиланні?!?
Мелтемi

53
Це зовсім не відповідає на питання.
MikeEL

1
Вибрано це як відповідь, але знайте, що : посилання - це також варіант.
Мелтемі

14
Чи є якась документація, яка фактично визначає ці типи стовпців? Наприклад, чим stringвідрізняється від text?
Грант Бірхмайер

3
@Kangur uniqі indexсуфікси (і всі типи) задокументовані у використанні rails generate model. Запустіть, rails g modelщоб переглянути документи використання.
Денніс

188

Щоб створити модель, на яку посилається інша, використовуйте генератор моделі Ruby on Rails:

$ rails g model wheel car:references

Це створює додаток / моделі / 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
omninonsense

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

Принаймні, це було проблемою для мене.


Зачекайте?!? Що? Я постійно використовую великі літери назви своїх моделей! Які "проблеми" ви бачите?
Мелтемі

2
Я кажу не про назву вашої моделі, а про назву "Модель". Я спробував створити подібну модель: rails g Назва продукту: string та got: Не вдалося знайти модель генератора. тому я спробував це так: rails g Назва заголовку продукту: string і воно спрацювало.
Віктор Аугусто

1
Ага. Не стикався з цим b4. Гарна порада!
Мелтемі

2
(Справа не в назві моделі, це в modelтому, що йдеться про генератор. rails g model Product …Це добре.)
Ашера


0

У ROR дуже просто створити модель, на яку посилаються інші.

рейки g модель Назва предмета: рядок опис: текстовий продукт: посилання

Цей код додасть стовпчик "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 ...%>

працював на мене.


Це може бути хорошим відповідь , але я не знаю , як це відноситься до ФПУ , який про типах полів ( :integer, :stringі т.д ...).
Мелтемі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.