ruby-on-rails 如何定义ActiveRecord模型的模式?

oknrviil  于 2023-06-25  发布在  Ruby
关注(0)|答案(2)|浏览(157)

我只能在迁移时找到如何定义列。
但是我不需要迁移我的模型。
我想用它来“虚拟”。
AR是否仅从db读取列数据?
有什么方法可以像在DataMapper中那样定义列吗?

class Post
  include DataMapper::Resource

  property :id,        Serial 
  property :title,     String
  property :published, Boolean
end

现在我可以在没有迁移/连接的情况下使用我的模型了。

mzmfm0qo

mzmfm0qo1#

在Rails中,您不需要在模型上定义属性。它们将从数据库中反映出来。只要确保为要使用的表创建模型即可。但是,您需要告诉ActiveRecord如何创建模型之间的关系。有关创建关系的信息,请查看以下内容:http://guides.rubyonrails.org/association_basics.html
如果你不使用Rails的id来设置主键,你可以通过set_primary_key :your_key来设置主键(尽管这已经被弃用了)。如果您不遵循Rails命名表的约定,即小写、蛇形、复数形式的表名,您可以通过set_table_name 'your_table'来更改。

50few1ms

50few1ms2#

我在google上搜索如何用psql数据库为我的活动记录模型指定非公共模式时发现了这个页面。
例如,您有publicauth模式。为了指定模型不同的模式,可以使用以下内容

class AdminUser
  self.table_name = 'auth.admin_user'
end

或者可以使用schema_search_path选项修改database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  username: postgres
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  schema_search_path: 'public,auth'

那么你可以用

class AdminUser
  self.table_name = 'admin_user'
end

相关问题