boulder_ruby
boulder_ruby

Reputation: 39753

Rails + model.rb issues -- rails console error message -- "Object doesn't support #inspect"

EDIT3: To wit, DO NOT put migration code in your model.rb files!!!

EDIT2: THE QUESTION (?) : does ANY migration code belong in a model.rb file?

EDIT: Just mentioning extra (system/config/etc) information that I need to share in order to get a good answer to this question from someone (even if it's not you) would be greatly appreciated. (1-ups for good tips on stack overflow optimization strategies)

First of all, here is the command prompt activity:

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)

The basic schema is that we have two models here, page.rb and subject.rb. Subject is the parent of Page, as you will see. Here are the two models.

Guide to viewing this code: I think all that is relevant to this problem in these two models are the has_many and belongs_to tags. And I admit, I feel like there should be some foreign keys here. Should there be foreign keys here? Or is that wrong too?

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

I'm really new at this, so please forgive me if I didn't give you some piece of information that you need. Please let let know what extra information you need, I'm not sure where the error is coming from but I know this is a model (M....VC) issue. 95% on that one.

Upvotes: 0

Views: 327

Answers (1)

kreek
kreek

Reputation: 8834

You have a migration in your model.

create_table "Pages" do |t|
  t.string "name"
  t.string "permalink"
  t.integer "position"
  t.boolean "visible?"
end

Should be in ./db/migrate/{timestamp}_create_pages.rb. This file was generated for you if you did rails g model page

You also need a subject_id column to store the relation to subject

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

Upvotes: 3

Related Questions