gpt4 book ai didi

ruby-on-rails - 为什么 null monkeypatch 会删除迁移中的方法而不是 Rails 控制台中的方法?

转载 作者:行者123 更新时间:2023-12-02 01:34:38 27 4
gpt4 key购买 nike

这种行为非常酷,因为它可以轻松编写“面向 future ”的迁移,其中迁移定义内联模型类,以防该类稍后从代码库中删除。但它是如何工作的?

$ rails c
pry(main)> User.methods.count
=> 686
pry(main)> class User < ActiveRecord::Base; end
=> nil
pry(main)> User.methods.count
=> 686

这是一个迁移:

class FrobulateUsers < ActiveRecord::Migration
puts User.methods.count

class User < ActiveRecord::Base
end

puts User.methods.count
...
end

当我运行它时:

$ rake db:migrate
687
666

为什么这些方法在迁移中消失了,但在控制台中却没有?

最佳答案

搞乱这个,这是真正的类名......

class FrobulateUsers < ActiveRecord::Migration

puts User.name

class User < ActiveRecord::Base
end

puts User.name

end

输出

User
FrobulateUsers::User

一张纸条,你可以把这个放在类外面...

# 20150810221740_frobulate_users.rb

class User < ActiveRecord::Base
end

class FrobulateUsers < ActiveRecord::Migration

puts User.name

end

输出

User

关于ruby-on-rails - 为什么 null monkeypatch 会删除迁移中的方法而不是 Rails 控制台中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31929847/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com