我有一个属于某个部分的文章模型。我无法使这种连接正常工作,而且我收到了#34; Undefined Method"在rails控制台中尝试Section.article或Article.section时出错。
如何将这些模型组合在一起以打印特定部分的所有文章并验证其连接?
我已经从答案和帖子中实施了许多解决方案,可能会让事情变得混乱。
感谢您的帮助!
模型(我还有带有forgeign_key或参考条目的版本):
class Article < ActiveRecord::Base
belongs_to :section
end
class Section < ActiveRecord::Base
has_many :articles
end
迁移到更新表:
class AddSectionRefToArticles < ActiveRecord::Migration
def change
add_reference :articles, :section, index: true
end
end
Schema.rb
ActiveRecord::Schema.define(version: 20141107123935) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "articles", force: true do |t|
t.string "title"
t.string "body"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "section_id"
end
add_index "articles", ["section_id"], name: "index_articles_on_section_id", using: :btree
create_table "sections", force: true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
end
答案 0 :(得分:1)
您尝试使用类方法(Section.article
或Article.section
),而关联被定义为实例方法。因此,要调用关联,您必须在对象上调用它,例如:Section.first.articles
或Article.last.section
答案 1 :(得分:1)
你在命令行上实际运行的是什么? Section.article
或Article.section
无效。
您需要在实例上运行关系方法,而不是类本身。
section = Section.create(name: 'Section 1')
section.articles << Article.new(title: 'My article')
section.articles # returns an array of articles belonging to the Section 1 object
Article.last.section # returns the Section 1 object