我对重新命名代码库中的变量感兴趣。它也是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)>'
型
2条答案
按热度按时间ghhkc1vu1#
您可以为您的
Content
型号指定todos
表:字符串
bvpmtnay2#
问题与
Content
的todos
字段/属性与表名称相同无关。唯一的问题是Content
是否也与Todo
关联,且has_many :todos
。您显示的错误是因为您不能让标识符同时是模块和类。现在在
app/models/concerns/content_types.rb
中,你有这样的东西:module Content::Types
?只需将其更改为ContentTypes
(并且在任何地方使用它)。