如何在rails中创建没有主键的模型

时间:2010-06-21 11:09:42

标签: ruby-on-rails activerecord

我想创建一个模型'Relation',它扩展了ActiveRecord :: Base,将它的表名设置为'questions_tags',没有主键。我该怎么办?

class Relation < ActiveRecord::Base
  set_table_name 'questions_tags' # set table name, right?

  # how to define 'no-pk'?

end

更新


你好,伙计们。我知道使用'create_table'可以解决这个问题,但这正是我想知道的:create_table(:id=>false)背后的魔力是什么?如何在不使用create_table(:id=>false)的情况下获得相同的效果?

3 个答案:

答案 0 :(得分:11)

创建如下所示的迁移:

class CreateQuestionsTags < ActiveRecord::Migration

  def self.up
   create_table :questions_tags, {:id => false, :force => true} do |t|
     ...
     t.timestamps
   end
  end

  def self.down
   drop_table :questions_tags
  end

end

答案 1 :(得分:2)

如果您要创建一个数据透视表,就像从表名中看起来一样,那么AR将在后台处理它。

但是,如果您要创建一个包含更多字段的表,那么: 1)请将您的表重命名为“realtions” 2)使用主键“id”

没有充分的理由不在表中使用主键,很可能你以后会发现自己后悔。

答案 2 :(得分:-7)

你为什么不想PK?

Active Record期待一个PK,我不知道它能做什么伤害。