मैं रेल के लिए नया हूँ और मैं दो has_many प्राप्त करने की कोशिश कर रहा है: (हालांकि रिश्तों बाहर काम करने के रूप में has_and_belongs_to_many का उपयोग कर करने का विरोध किया के रूप में इस पोस्ट http://blog.flatironschool.com/post/35346328762/why-you-dont-need-has-and-belongs-to-many) द्वारा समझाया, लेकिन अब एक Postgres त्रुटि में चल रहा हूँ:रेल has_many: के माध्यम से पीजी :: त्रुटि: त्रुटि: स्तंभ संदर्भ "आईडी" अस्पष्ट त्रुटि
PG::Error: ERROR: column reference "id" is ambiguous
LINE 1: ...on_id" IS NULL AND "components"."id" = 1 ORDER BY id ASC LIM...
^
: SELECT 1 AS one FROM "components" INNER JOIN "collection_components" ON "components"."id" = "collection_components"."component_id" WHERE "collection_components"."collection_id" IS NULL AND "components"."id" = 1 ORDER BY id ASC LIMIT 1
Rendered collections/_form.html.haml (117.0ms)
Rendered collections/new.html.haml within layouts/application (143.5ms)
Completed 500 Internal Server Error in 164ms
ActiveRecord::StatementInvalid - PG::Error: ERROR: column reference "id" is ambiguous
LINE 1: ...on_id" IS NULL AND "components"."id" = 1 ORDER BY id ASC LIM...
^
_form.html.haml
= form_for @collection do |f|
- if @collection.errors.any?
#error_explanation
%h1= "#{pluralize(@collection.errors.count, "error")} prohibited this collection from being saved:"
%ul
- @collection.errors.full_messages.each do |msg|
%li= msg
.field
- Component.all.each do |component|
= label_tag :component_ids, component.id
= check_box_tag :component_ids, component.id, @collection.components.include?(component), :name => 'collection[component_ids][]'
.field
= f.label :title
= f.text_field :title
.actions
= f.submit 'Save'
collection_component.rb
class CollectionComponent < ActiveRecord::Base
attr_accessible :collection_id,
:component_id
belongs_to :collection
belongs_to :component
end
collection.rb
class Collection < ActiveRecord::Base
default_scope order('id ASC')
attr_accessible :style_id,
:name,
:title,
:component
#has_and_belongs_to_many :components
has_many :collection_components, :dependent => :destroy
has_many :components, :through => :collection_components
belongs_to :style
validates_presence_of :style
validates_presence_of :title
before_save :create_name
private
def create_name
self.name = title.parameterize
end
end
component.rb
class Component < ActiveRecord::Base
default_scope order('id ASC')
attr_accessible :category_id,
:name,
:title,
:collection,
:style
has_many :collection_components, :dependent => :destroy
has_many :collections, :through => :collection_components
has_many :component_styles
has_many :styles, :through => :component_styles
belongs_to :category
validates_presence_of :category
validates_presence_of :title
before_save :create_name
private
def create_name
self.name = title.parameterize
end
end
collection_components तालिका
Column | Type | Modifiers
---------------+-----------------------------+--------------------------------------------------------------------
id | integer | not null default nextval('collection_components_id_seq'::regclass)
collection_id | integer |
component_id | integer |
created_at | timestamp without time zone | not null
updated_at | timestamp without time zone | not null
Indexes:
"collection_components_pkey" PRIMARY KEY, btree (id)
संग्रह तालिका
Column | Type | Modifiers
------------+-----------------------------+----------------------------------------------------------
id | integer | not null default nextval('collections_id_seq'::regclass)
style_id | integer |
name | character varying(255) |
title | character varying(255) |
created_at | timestamp without time zone | not null
updated_at | timestamp without time zone | not null
Indexes:
"collections_pkey" PRIMARY KEY, btree (id)
घटकों तालिका
Column | Type | Modifiers
-------------+-----------------------------+---------------------------------------------------------
id | integer | not null default nextval('components_id_seq'::regclass)
name | character varying(255) |
title | character varying(255) |
category_id | integer |
created_at | timestamp without time zone | not null
updated_at | timestamp without time zone | not null
Indexes:
"components_pkey" PRIMARY KEY, btree (id)
इसके अतिरिक्त, श्रेणियों की तालिका पहले से ही has_many_though संबंध स्थापित करने से पहले पॉप्युलेट हो चुकी है और संग्रह तालिका खाली है। –
मुझे यकीन नहीं है कि इससे कोई फर्क पड़ता है या नहीं, लेकिन जब मैंने संग्रह_कंपोनेंट मॉडल जेनरेट किया, तो मैंने इसे "collection_components" के रूप में जेनरेट किया और बाद में मैन्युअल रूप से "s" –
मैन्युअल रूप से हटाए गए साधनों को हटा दिया ?? तुमने कहाँ से हटा दिया? – codeit