ruby-on-rails – Rails has_many:通过PG ::错误:错误:列引用
发布时间:2020-12-16 21:32:30 所属栏目:百科 来源:网络整理
导读:我是rails的新手,我一直在尝试获得两个has_many:虽然关系可以解决(而不是像本文 http://blog.flatironschool.com/post/35346328762/why-you-dont-need-has-and-belongs-to-many所解释的那样使用has_and_belongs_to_many),但现在遇到了Postgres错误: PG::Er
我是rails的新手,我一直在尝试获得两个has_many:虽然关系可以解决(而不是像本文
http://blog.flatironschool.com/post/35346328762/why-you-dont-need-has-and-belongs-to-many所解释的那样使用has_and_belongs_to_many),但现在遇到了Postgres错误:
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,: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) 解决方法
试试这个:
default_scope { order('collections.id ASC') } //collection.rb default_scope { order('components.id ASC') } //component.rb 当您执行id上升的连接变为不明确的列时,因为组件和集合都具有id列.它不知道使用哪个. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |