Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 向用户添加化身_Ruby On Rails_Ruby_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails 向用户添加化身

Ruby on rails 向用户添加化身,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我在RubyonRails上做一个项目;我只想为拥有“@gmail.com”电子邮件地址的用户设置一个默认化身。我找到了迁移文件,但无法找到设置默认化身的文件。迁移文件是否可以这样做 谢谢大家 class AddAvatarToUsers < ActiveRecord::Migration[5.0] def change add_column :decidim_users, :avatar, :string end end class AddAvatarToUsers

我在RubyonRails上做一个项目;我只想为拥有“@gmail.com”电子邮件地址的用户设置一个默认化身。我找到了迁移文件,但无法找到设置默认化身的文件。迁移文件是否可以这样做

谢谢大家

class AddAvatarToUsers < ActiveRecord::Migration[5.0]
  def change
    add_column :decidim_users, :avatar, :string
  end
end
class AddAvatarToUsers
您可以为
avatar
列设置通用默认值,但在迁移文件中,您无法实现所描述的逻辑


无论迁移如何,都应该将此逻辑插入控制器或模型中。

如果您的名称更具描述性,我想这会很好

我认为AddAvatarToUsers对于这次迁移没有意义

无论如何,你可以试试这个!:

class AddAvatarToUsers < ActiveRecord::Migration
  def self.up
    change_column :decidim_users, :avatar, :string, :default => "@gmail.com"
  end

  def self.down
    # You can't currently remove default values in Rails
    raise ActiveRecord::IrreversibleMigration, "Can't remove the default"
  end
end
class AddAvatarToUsers“@gmail.com”
结束
def自动关闭
#当前无法删除Rails中的默认值
raise ActiveRecord::不可逆转迁移,“无法删除默认值”
结束
结束
祝你好运

我有这个:

应用程序\u controller.rb

class ApplicationController < ActionController::Base
end
# Entry point for Decidim. It will use the `DecidimController` as
# entry point, but you can change what controller it inherits from
# so you can customize some methods.
class DecidimController < ApplicationController
end
class AccountActivationsController < ApplicationController
end
class ApplicationController
decidim_控制器.rb

class ApplicationController < ActionController::Base
end
# Entry point for Decidim. It will use the `DecidimController` as
# entry point, but you can change what controller it inherits from
# so you can customize some methods.
class DecidimController < ApplicationController
end
class AccountActivationsController < ApplicationController
end
#Decidim的入口点。它将使用'DecidimController'作为
#入口点,但您可以更改它从哪个控制器继承
#因此,您可以自定义一些方法。
类DecidimController<应用程序控制器
结束
而这个帐户_activation _controller.rb

class ApplicationController < ActionController::Base
end
# Entry point for Decidim. It will use the `DecidimController` as
# entry point, but you can change what controller it inherits from
# so you can customize some methods.
class DecidimController < ApplicationController
end
class AccountActivationsController < ApplicationController
end
class AccountActivationsController
我怎样才能找到创建用户的函数,因为我需要修改它,不是吗


谢谢您的回答。

既然您只在电子邮件地址有“@gmail.com”时才将默认化身设置为用户,那么在保存或更新用户信息时不应该这样做吗?不在迁移期间。默认列值为固定/常量。不能设置依赖于其他列的列默认值。如果用户没有头像,最好将
avatar
列/属性保留为空,并动态处理回退。太好了,谢谢你的回答。我如何理解迁移从何而来?编辑:我如何理解创建默认化身的功能是什么?谢谢你的回答。我只想为具有@gmail.com帐户电子邮件的用户设置一个默认图像,并为具有其他帐户电子邮件的用户设置另一个图像。我不明白创建帐户的功能是什么。我该怎么办?在这种情况下,如果用户电子邮件包含@gmail.com,您可能需要在decidimUser控制器中执行创建前操作,以将化身设置为某个内容。如果您正在使用Desive,您必须覆盖Desive控制器。让我知道如果你仍然面临问题,我没有Desive,这就是问题所在,我无法找到createUser函数,我不知道如何找到它,我该怎么做?你的目录中可能有decidim_users_controller.rb。在该文件中找到create方法,您必须根据需要修改该方法!