我想创建一个模型'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(:id=>false)
背后的魔力是什么?如何在不使用create_table(:id=>false)
的情况下获得相同的效果?
答案 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,我不知道它能做什么伤害。