Christopher Spears
Christopher Spears

Reputation: 1105

Setting columns to references in rails 4

In my web app, I have nodes and links. A link has two nodes. One node is a source node, and the other node is a target node. Basically, I want source and target columns in the database that hold references to nodes. I am trying to figure out how to implement this.

Here is the migration for the nodes model:

class CreateNodes < ActiveRecord::Migration
  def change
    create_table :nodes do |t|
      t.string :name
      t.integer :group
      t.references :link, index: true

      t.timestamps
    end
  end
end

Here is the node model:

class Nodes < ActiveRecord::Base
  belongs_to :link
end

I am trying to figure out how to set up the migration for the links model. Here is what I have so far:

class CreateLinks < ActiveRecord::Migration
  def change
    create_table :links do |t|
      t.integer :value
      t.boolean :checked

      t.timestamps
    end
  end
end

Here is what I have in my model:

class Links < ActiveRecord::Base
  has_many :nodes
end

Would the correct migration look like this?

class CreateLinks < ActiveRecord::Migration
  def change
    create_table :links do |t|
      t.integer :value
      t.boolean :checked
      t.references :source
      t. references :target

      t.timestamps
    end
  end
end

Upvotes: 0

Views: 55

Answers (1)

Nikolay
Nikolay

Reputation: 1392

t.references :smith is basically a shortcut for t.integer :smth_id so if your Nodes belong to Links, then yes that construction seems correct.

not sure where your links#source and links#target point to though.

Upvotes: 1

Related Questions