gpt4 book ai didi

ruby-on-rails - 设计 gem : add module after initial install

转载 作者:行者123 更新时间:2023-12-04 07:31:43 26 4
gpt4 key购买 nike

这可能不是 设计 具体但我想知道如何在初始安装不包含所述模块时向已安装的 gem 添加一个附加模块?在 Devise 的情况下,迁移助手 t.confirmable在初始迁移的 Self.up 中很有用方法和整个用户表在 Self.down 中被拆除.我的 Rails-fu 不够强大,无法发现 t.confirmable 的内容。助手实际上是在做...

User表已存在,您想添加类似 :confirmable 的内容或 :token_authenticatable ?显然你不能只是 create_table(:users)再次...所以我想我想add_column :users, ...remove_column :users, ...但是我们如何去找出需要发生的事情呢?

最佳答案

看看 Devise::Schema

https://github.com/plataformatec/devise/blob/master/lib/devise/schema.rb

有这个

# Creates confirmation_token, confirmed_at and confirmation_sent_at.
def confirmable
apply_devise_schema :confirmation_token, String
apply_devise_schema :confirmed_at, DateTime
apply_devise_schema :confirmation_sent_at, DateTime
end

进而

https://github.com/plataformatec/devise/blob/master/lib/devise/orm/active_record.rb
def apply_devise_schema(name, type, options={})
column name, type.to_s.downcase.to_sym, options
end

所以在你的迁移中
 add_column :users, :confirmation_token, :string
add_column :users, :confirmed_at, :datetime
add_column :users, :confirmation_sent_at, :datetime

和向下相反..

关于ruby-on-rails - 设计 gem : add module after initial install,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4423927/

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