0

EDIT3:つまり、model.rbファイルに移行コードを入れないでください!!!

EDIT2:質問(?):移行コードはmodel.rbファイルに属しますか?

編集:誰かからこの質問への良い答えを得るために私が共有する必要がある追加の(system / config / etc)情報に言及するだけで(あなたでなくても)大歓迎です。(1-スタックオーバーフロー最適化戦略に関する優れたヒントのアップ)

まず、コマンドプロンプトのアクティビティは次のとおりです。

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の2つのモデルがあるということです。ご覧のとおり、SubjectはPageの親です。これが2つのモデルです。

このコードを表示するためのガイド:これら2つのモデルでこの問題に関連するのは、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)の問題です。その1つで95%。

4

1 に答える 1

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
于 2012-05-18T06:16:44.660 に答える