ruby-on-rails 内部通信轨道:设置一些特定于操作的自定义数据属性

798qvoo8  于 2023-02-01  发布在  Ruby
关注(0)|答案(1)|浏览(78)

我想用intercom-rails gem设置自定义数据属性。在UserController#sign_up中,我有intercom_custom_data.user[:sign_up] = true,但变量没有创建。我尝试在其他控制器(TruckController#edit)中,如果它创建了。

用户控制器.rb

class UserController < ApplicationController                                                                                                                                                                                                               
  skip_before_filter :check_admin
  skip_before_filter :authenticate_user!, except: [:recovery]
  skip_before_filter :verify_authenticity_token
    
  def sign_up
    ...
    if user.save
      puts current_user.inspect 
      # <User id: 11, username: "user", email: "user@email.com", encrypted_password: "aebvcbb5c..."
      intercom_custom_data.user[:sign_up] = true
    end
  end
end

卡车_控制器.rb

TruckController < ApplicationController
  def index
    puts current_user.inspect 
    # <User id: 11, username: "user", email: "user@email.com", encrypted_password: "aebvcbb5c..."
    intercom_custom_data.user[:sign_up] = true
  end
end
0mkxixxg

0mkxixxg1#

我将在用户模型中添加一个字段signed_up,这样您就可以根据需要对其进行更改。
现在,转到config/initializers中的intercom.rb配置文件,并向用户模型添加一个自定义数据字段:

IntercomRails.config do |config|
  ...
  config.user.model = Proc.new { YourUserModelClass }

  config.user.custom_data = {
    :sign_up=> Proc.new { |user| user.signed_up }
  }
  ...
end

你应该看到该字段在内部通话后。

相关问题