ruby-on-rails 如何重命名一个变量名(它也是Rails中的表名)

tnkciper  于 2023-08-08  发布在  Ruby
关注(0)|答案(2)|浏览(119)

我对重新命名代码库中的变量感兴趣。它也是Rails中的表名。你是怎么做到的?
我知道在使用alias_attribute的地方有一些列重命名的东西。是否有类似的方法来重命名一个变量,而这个变量也是rails中的表名?

  • 谢谢-谢谢
    schema.rb
ActiveRecord::Schema.define(version: 2015_05_19_181601) do

  create_table "todos", force: :cascade do |t|
    t.string "title"
    t.boolean "is_completed", default: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "session_user_id"
  end

end

个字符
我试过了

class Content < ActiveRecord::Base
  self.table_name = 'todos'
end


但是得到这个错误:

An error occurred while loading ./spec/decorators/todos_decorator_spec.rb.
Failure/Error: module Content

TypeError:
  Content is not a module
  app/models/content_controller.rb:1: previous definition of Content was here
# ./app/models/concerns/content_types.rb:1:in `<top (required)>'
# ./config/environment.rb:5:in `<top (required)>'
# ./spec/rails_helper.rb:13:in `require'
# ./spec/rails_helper.rb:13:in `<top (required)>'
# ./spec/decorators/todos_decorator_spec.rb:1:in `require'
# ./spec/decorators/todos_decorator_spec.rb:1:in `<top (required)>'

ghhkc1vu

ghhkc1vu1#

您可以为您的Content型号指定todos表:

class Content < ActiveRecord::Base
  self.table_name = 'todos'
end

字符串

bvpmtnay

bvpmtnay2#

问题与Contenttodos字段/属性与表名称相同无关。唯一的问题是Content是否也与Todo关联,且has_many :todos
您显示的错误是因为您不能让标识符同时是模块和类。现在在app/models/concerns/content_types.rb中,你有这样的东西:module Content::Types?只需将其更改为ContentTypes(并且在任何地方使用它)。

相关问题