Я создал HABTM ассоциацию НПЗ СХ, но она возвращает ошибку, как показано ниже:Как вставить данные в таблице соединения на основе HABTM ассоциации рельсы 4
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "refinery_georgiantoast_restaurant_wines" does not exist
LINE 5: WHERE a.attrelid = '"refinery_georgiantoast_r...
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"refinery_georgiantoast_restaurant_wines"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
/поставщик/расширение/georgiantoasts/приложение/модели /refinery/georgiantoast/restaurant.rb
Вот мой restaurant.rb модель:
module Refinery
module Georgiantoast
class Restaurant < Refinery::Core::BaseModel
validates :title, :presence => true, :uniqueness => true
belongs_to :avatars, :class_name => '::Refinery::Image'
has_many :restaurants_wines
has_many :wines, :through => :restaurants_wines
# To enable admin searching, add acts_as_indexed on searchable fields, for example:
#
# acts_as_indexed :fields => [:title]
end
end
end
/vendor/extensions/georgiantoasts/app/models/refinery/georgiantoast/wine.rb
Вот мой wine.rb модель:
module Refinery
module Georgiantoast
class Wine < Refinery::Core::BaseModel
validates :title, :presence => true, :uniqueness => true
belongs_to :avatars, :class_name => '::Refinery::Image'
has_many :restaurants_wines
has_many :restaurants, :through => :restaurants_wines
# To enable admin searching, add acts_as_indexed on searchable fields, for example:
#
# acts_as_indexed :fields => [:title]
end
end
end
/поставщик/расширения/georgiantoasts/приложение/модели/НПЗ/georgiantoast/restaurant_wines.rb
Вот мой присоединиться табличная модель restaurant_wines.rb
module Refinery
module Georgiantoast
class RestaurantWine < Refinery::Core::BaseModel
belongs_to :wine
belongs_to :restaurant
# To enable admin searching, add acts_as_indexed on searchable fields, for example:
#
# acts_as_indexed :fields => [:title]
end
end
end
/vendor/extensions/georgiantoasts/app/controllers/refinery/georgiantoast/admin/restaurants_controller.rb
Здесь restaurants_controller.rb Контроллер:
module Refinery
module Georgiantoast
module Admin
class RestaurantsController < ::Refinery::AdminController
crudify :'refinery/georgiantoast/restaurant'
private
# Only allow a trusted parameter "white list" through.
def restaurant_params
params.require(:restaurant).permit(:title, :description, :address, :town, :state, :lat, :lng, :avatars_id, :wine_ids => [])
end
end
end
end
end
/поставщики/расширения/georgiantoasts/app/views/refinery/georgiantoast/admin/restaurants/_form.html.erb
Вот ресторан _form.html.erb формы:
<%= form_for [refinery, :georgiantoast_admin, @restaurant] do |f| -%>
<%= render '/refinery/admin/error_messages',
:object => @restaurant,
:include_object_name => true %>
<div class='field'>
<%= f.label :title -%>
<%= f.text_field :title, :class => 'larger widest' -%>
</div>
<div class='field'>
<%= render '/refinery/admin/wysiwyg',
:f => f,
:fields => [:description],
:object => "georgiantoast/restaurant" -%>
</div>
<div class='field'>
<%= f.label :address -%>
<%= f.text_field :address -%>
</div>
<div class='field'>
<%= f.label :wine -%>
<%= select_tag "#{f.object_name}[wine_ids][]", options_for_select(Refinery::Georgiantoast::Wine.all.collect { |wine| [wine.title, wine.id] }), {multiple: true} -%>
</div>
<%= render '/refinery/admin/form_actions', :f => f,
:continue_editing => false,
:delete_title => t('delete', :scope => 'refinery.restaurants.admin.restaurants.restaurant'),
:delete_confirmation => t('message', :scope => 'refinery.admin.delete', :title => @restaurant.title) -%>
<% end -%>
Вот файл миграция:
class CreateJoinTableRestaurantsWines < ActiveRecord::Migration
def change
create_join_table :restaurants, :wines do |t|
t.index :restaurant_id
t.index :wine_id
end
end
end
Когда я отправляю свою форму она не выполняет никаких действий в вызове присоединиться к таблице ,
Если я пытаюсь запустить следующую команду на rails console
она возвращает меня под ошибкой:
2.2.3 :001 > r = Refinery::Georgiantoast::Restaurant.first
Refinery::Georgiantoast::Restaurant Load (1.0ms) SELECT "refinery_georgiantoast_restaurants".* FROM "refinery_georgiantoast_restaurants" ORDER BY "refinery_georgiantoast_restaurants"."id" ASC LIMIT 1
=> #<Refinery::Georgiantoast::Restaurant id: 1, title: "abc restaurant", description: "<p>abc restaurant</p>", address: "12 helifax estate", town: "helifax", state: "toronto", lat: #<BigDecimal:55fdfc0,'-0.12555555E2',18(27)>, lng: #<BigDecimal:55fde80,'0.74555555E2',18(27)>, avatars_id: 3, position: nil, created_at: "2016-08-27 11:26:29", updated_at: "2016-08-27 11:26:29">
2.2.3 :002 > r.wine_ids
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "refinery_georgiantoast_restaurant_wines" does not exist
LINE 5: WHERE a.attrelid = '"refinery_georgiantoast_r...
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"refinery_georgiantoast_restaurant_wines"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:592:in `async_exec'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:592:in `block in exec_no_cache'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract_adapter.rb:472:in `block in log'
from /home/muhammad/.rvm/gems/[email protected]/gems/activesupport-4.2.6/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract_adapter.rb:466:in `log'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:592:in `exec_no_cache'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:584:in `execute_and_clear'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:160:in `exec_query'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:733:in `column_definitions'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/connection_adapters/postgresql/schema_statements.rb:197:in `columns'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/connection_adapters/schema_cache.rb:43:in `columns'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/connection_adapters/schema_cache.rb:49:in `columns_hash'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/associations/association_scope.rb:85:in `column_for'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/associations/association_scope.rb:94:in `bind'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/associations/association_scope.rb:103:in `last_chain_scope'
from /home/muhammad/.rvm/gems/[email protected]/gems/activerecord-4.2.6/lib/active_record/associations/association_scope.rb:139:in `add_constraints'
... 9 levels...
from /home/muhammad/.rvm/gems/[email protected]/gems/railties-4.2.6/lib/rails/commands/console.rb:9:in `start'
from /home/muhammad/.rvm/gems/[email protected]/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:68:in `console'
from /home/muhammad/.rvm/gems/[email protected]/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /home/muhammad/.rvm/gems/[email protected]/gems/railties-4.2.6/lib/rails/commands.rb:17:in `<top (required)>'
from /home/muhammad/.rvm/gems/[email protected]/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
from /home/muhammad/.rvm/gems/[email protected]/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `block in require'
from /home/muhammad/.rvm/gems/[email protected]/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:240:in `load_dependency'
from /home/muhammad/.rvm/gems/[email protected]/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
from /home/muhammad/workspace/georgian-toast-wines/bin/rails:9:in `<top (required)>'
from /home/muhammad/.rvm/gems/[email protected]/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:268:in `load'
from /home/muhammad/.rvm/gems/[email protected]/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:268:in `block in load'
from /home/muhammad/.rvm/gems/[email protected]/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:240:in `load_dependency'
from /home/muhammad/.rvm/gems/[email protected]/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:268:in `load'
from /home/muhammad/.rvm/rubies/ruby-2.2.3/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /home/muhammad/.rvm/rubies/ruby-2.2.3/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from -e:1:in `<main>'
Все миграции уже бежал, не миграции или семя не находится на рассмотрении тоже.
это говорит: 'uninitialized constant Refinery :: Georgiantoast :: Restaurant :: RestaurantsWine' также это мой контроллер ресторана новый метод' def new @wines = Refinery :: Georgiantoast: : Wine.all end' Я написал его в ресторане контроллер новый метод доступа к '@ винам' – LearningROR
В рельсах консоли это работает? 'Restaurant.first.wines.new' –
Я попробовал: 'Refinery :: Georgiantoast :: Restaurant.first.wines.new' Он говорит:' NameError: uninitialized constant Refinery :: Georgiantoast :: Restaurant :: RestaurantsWine' – LearningROR