EDIT3: 也就是说,不要将迁移代码放在model.rb文件中!!!
EDIT2:问题(?): 任何迁移代码都属于model.rb文件吗?
编辑:只需提及我需要分享的额外(系统/配置/等)信息,以便从某人(即使不是你)得到这个问题的良好答案,将不胜感激。 (1-up有关堆栈溢出优化策略的好建议)
首先,这是命令提示符活动:
C:\Users\davo\Desktop\RailsProjects\simple_cms>rails c
Loading development environment (Rails 3.2.3)
irb(main):001:0> subject = Subject.find(1)
←[1m←[36mSubject Load (1.0ms)←[0m ←[1mSELECT `subjects`.* FROM `subjects` WHERE `subjects`.`id` = 1
LIMIT 1←[0m
=> #<Subject id: 1, name: "Initial Subject", position: 1, visible: true, created_at:"2012-05-18 01:00:26", updated_at: "2012-05-18 01:11:21">
irb(main):002:0> subject.pages
(Object doesn't support #inspect)
基本架构是我们在这里有两个模型,page.rb和subject.rb。正如您将看到的,Subject是Page的父级。这是两个模型。
查看此代码的指南:我认为这两个模型中与此问题相关的所有内容都是has_many和belongs_to标记。我承认,我觉得这里应该有一些外键。这里有外键吗?或者这也错了?
subject.rb中
class Subject < ActiveRecord::Base
# attr_accessible :title, :body
has_many :pages
scope :visible, where(:visible => true)
scope :invisible, where(:visible => false)
scope :search, lambda {|query| where(["name LIKE ?", "%#{query}%"])}
end
page.rb
class Page < ActiveRecord::Base
has_many :sections
belongs_to :subject
# attr_accessible :title, :body
create_table "Pages" do |t|
t.string "name"
t.string "permalink"
t.integer "position"
t.boolean "visible?"
end
end
我真的很陌生,所以如果我没有给你一些你需要的信息,请原谅我。请让我们知道您需要哪些额外信息,我不确定错误来自哪里,但我知道这是一个模型(M .... VC)问题。那个95%。
答案 0 :(得分:3)
您的模型中有迁移。
create_table "Pages" do |t|
t.string "name"
t.string "permalink"
t.integer "position"
t.boolean "visible?"
end
应该在./db/migrate/{timestamp}_create_pages.rb中。如果您执行rails g model page
您还需要subject_id
列来存储与主题的关系
class CreatePages < ActiveRecord::Migration
def change
create_table :pages do |t|
t.integer :subject_id
t.string :name
t.string :permalink
t.integer :position
t.boolean :visible?
t.timestamps
end
end
end