协会未找到

时间:2015-03-28 00:15:11

标签: ruby-on-rails ruby join associations

我在两个模型之间进行了简单的关联,即作者和故事。

class Story < ActiveRecord::Base
    validates :category_id, presence: {message: "Se debe escoger una categoría"}
    validates :cuento, presence: {message: "Debe tener algun relato para ingresar"}
    validates :nombre, presence: {message: "No se puede ingresar relato sin titulo"}

belongs_to :author, class_name: "Author", :primary_key=>"id", :foreign_key => "author_id"
end

class Author < ActiveRecord::Base
    has_many :stories, :class_name => "Story", :primary_key => "id", :foreign_key =>"author_id"


end

在架构中:

  create_table "authors", force: true do |t|
    t.string   "nombre"
    t.date     "bod"
    t.string   "pais"
    t.string   "ciudad"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.text     "bio"
    t.integer  "user_id"
  end

 create_table "stories", force: true do |t|
    t.string   "nombre"
    t.integer  "category_id"
    t.date     "fecha"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.text     "resumen"
    t.text     "cuento"
    t.integer  "author_id"
  end

  add_index "stories", ["author_id"], name: "index_stories_on_author_id", using: :btree

现在,如果我在控制台上执行简单查询,例如:

Author.joins(:故事)

然后返回:

  

ActiveRecord :: ConfigurationError:名为'stories'的关联不是   作者发现;也许你拼错了?

此查询可能导致什么问题?

更新 我补充说:

class Author&lt;的ActiveRecord :: Base的     has_many:stories,class_name:“故事” 结束 类故事&lt;的ActiveRecord :: Base的     belongs_to:author,class_name:“作者” 结束 但是,在控制台中看起来是同样的错误:(

'ActiveRecord :: ConfigurationError:在作者上找不到名为'stories'的关联;也许你拼错了吗?' 其他一些想法???'谢谢!

更新2 我在模型代码中进行了更改,添加了将optionals class,foreign_key,primary_key放入的建议,但仍然没有......

2 个答案:

答案 0 :(得分:0)

这很奇怪,因为一切看起来都是正确的。这只是一个疯狂的猜测,但尝试将class_name添加到关联,即has_many :stories, class_name: "Story"

答案 1 :(得分:0)

如果您使用ActiveRecord::Base继承课程 然后,没有必要提供额外的选项,如::class_name => "Story", :primary_key => "id", :foreign_key =>"author_id"

    class Story < ActiveRecord::Base
      validates :category_id, presence: {message: "Se debe escoger una categoría"}
      validates :cuento, presence: {message: "Debe tener algun relato para ingresar"}
      validates :nombre, presence: {message: "No se puede ingresar relato sin titulo"}

      belongs_to :author
    end

    class Author < ActiveRecord::Base
      has_many :stories
    end

如上所述简化代码。它会工作。 感谢。