【发布时间】:2021-01-05 01:25:08
【问题描述】:
我想创建一个扩展 ActiveRecord::Base 的模型“Relation”,将其表名设置为“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)怎么能达到同样的效果?
【问题讨论】:
-
在我看来没有魔法。
create_table有一个额外的选项,无论是否必须创建id列。就这样。当您要求“魔术”时:您是指代码、生成的 sql 语句还是其他什么...? -
如果你想知道幕后发生了什么,我建议在 Rails API 文档中挖掘 depper:api.rubyonrails.org/classes/ActiveRecord/Base.html、api.rubyonrails.org/classes/ActiveRecord/Migration.html、api.rubyonrails.org/classes/ActiveRecord/Associations/…
-
@nathanvda,auralbee:谢谢你们。我是 Rails 新手,也许我需要阅读更多关于 ActiveRecord 的文章。
标签: ruby-on-rails activerecord