首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >友好ID不会在新的想法上创建新的插件(可设计的)

友好ID不会在新的想法上创建新的插件(可设计的)
EN

Stack Overflow用户
提问于 2014-08-25 12:21:20
回答 3查看 378关注 0票数 0

当我在我的Rails4应用程序中使用devise-invitable邀请用户时,应用程序不会创建一个新的友好id。我的user.rb文件中有以下代码

代码语言:javascript
复制
extend FriendlyId
friendly_id :name, :use => :slugged
def should_generate_new_friendly_id?
  after_invite_path_for? || new_record? || name_changed? || slug.blank? || super
end

我尝试了相当多不同的选择,但似乎找不到答案

EN

回答 3

Stack Overflow用户

发布于 2014-08-30 05:58:52

假设您在接受邀请的过程中收集了您的被邀请者姓名,可以通过将以下内容添加到您的控制器中来实现:

应用程序控制器

代码语言:javascript
复制
before_filter :configure_permitted_parameters, if: :devise_controller?

protected

def configure_permitted_parameters    
   devise_parameter_sanitizer.for(:accept_invitation).concat([:name, :slug])
end
票数 0
EN

Stack Overflow用户

发布于 2015-02-13 05:48:28

如果您需要在创建invite时创建插件,请执行以下操作:

我也遇到过同样的问题。

我用来邀请用户的命令:

User.invite!(email: "example@email.com", name: "John John")

问题在于,由于某些原因,在此过程中不会调用should_generate_new_friendly_id?

我的解决方案是编写一个方法来创建用户段塞

代码语言:javascript
复制
def slug_me!
  new_slug = [name.parameterize].join("-")
  if User.where(slug: new_slug).present? #check if the is a user with that slug already
    new_slug = [name.parameterize, User.last.id+1].join("-")
  end
  update_column(:slug, new_slug)
end

(在我的应用程序中,new_slag将是唯一的。不确定您的应用程序。您可能需要将[name.parameterize, User.last.id+1].join("-")更改为其他适合您需要的内容)

并覆盖devise使用的invite!方法:

代码语言:javascript
复制
def invite!
  super
  slug_me! if should_generate_new_friendly_id?
end

(我已经添加了if should_generate_new_friendly_id?,所以如果你邀请同一个人多次邀请,它不会创建slug )

在本例中,should_generate_new_friendly_id?将返回true,因为slugnil,因此slug.blank?将返回true

这可能不是最好的解决方案,但它对我来说是有效的。(我仍然在寻找更好的解决方案)

票数 0
EN

Stack Overflow用户

发布于 2020-07-19 19:38:57

我在上面也遇到了同样的问题:

代码语言:javascript
复制
User.invite!(email: "example@email.com", name: "John John")

我的解决方案是:

代码语言:javascript
复制
before_invitation_created :generate_slug

private

  def generate_slug
    return unless slug.nil?

    self.slug = set_slug
  end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25478992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档