Не удается заставить ассоциацию работать в форме - PullRequest
1 голос
/ 09 марта 2012

У меня возникают трудности с установлением ассоциации для работы с simple_form .

У меня есть следующие модели.

class Product < ActiveRecord::Base
  belongs_to :Retailer
end

и

class Retailer < ActiveRecord::Base
   has_many :Products
end

Моя частичная форма (products / _form.html.erb) содержит следующее

<%= simple_form_for(@product) do |f| %>
...
<% f.input :currency %>
<% f.association :retailer %>
...

Она работает без ассоциации, но при этом я получаю следующую ошибку:

undefined method `retailer_id' for #<Product:0x007ffbe0f7d530>

Я (очевидно) совершенно новичок в этом, но не смог разобраться с этим.

edit: проверено, что я запускаю миграции, и они актуальны.В таблице Retailer есть столбец идентификатора!

> Retailer.all
Retailer Load (0.2ms)  SELECT "retailers".* FROM "retailers" 
=> [#<Retailer id: 1, name: "Retailer 1" etc...

chema file:

ActiveRecord::Schema.define(:version => 20120308195055) do

  create_table "alerts", :force => true do |t|
   t.string   "url",        :null => false
   t.datetime "created_at", :null => false
   t.datetime "updated_at", :null => false
  end

  create_table "products", :force => true do |t|
      t.string   "title",                      :null => false
      t.integer  "price_cents", :default => 0, :null => false
      t.string   "currency",                   :null => false
      t.string   "asin",                       :null => false
      t.datetime "created_at",                 :null => false
      t.datetime "updated_at",                 :null => false
  end

    create_table "retailers", :force => true do |t|
      t.string   "name",       :null => false
      t.datetime "created_at", :null => false
      t.datetime "updated_at", :null => false
    end

  end

1 Ответ

0 голосов
/ 09 марта 2012

Поскольку в вашей модели и форме для продукта соответственно указаны belongs_to :Retailer и <% f.association :retailer %>, вам необходимо добавить столбец retailer_id в таблицу продуктов.

Вы пропустили t.references :retailerв вашем файле миграции для создания таблицы продуктов.Вот почему я цитирую вас: «это работает без ассоциации, но с этим ошибка: undefined method 'retailer_id' for #<Product:0x007ffbe0f7d530>»

Да, таблица ритейлеров имеет столбец id, но для ссылки на ритейлера изпродукт, для вашей таблицы продуктов требуется столбец retailer_id.

...