Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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 2保存以使用友好ID更新我的别名_Ruby On Rails_Ruby_Ruby On Rails 4_Friendly Id - Fatal编程技术网

Ruby on rails 2保存以使用友好ID更新我的别名

Ruby on rails 2保存以使用友好ID更新我的别名,ruby-on-rails,ruby,ruby-on-rails-4,friendly-id,Ruby On Rails,Ruby,Ruby On Rails 4,Friendly Id,我使用的是对宝石友好的ID,目前我必须进行2次保存才能保存slug 我觉得这不太对 class Contractor < ActiveRecord::Base include FriendlyId friendly_id :slug_candidates, use: :slugged, slug_column: :alias after_commit :generate_new_alias, unless: Proc.new {|contractor| contractor.b

我使用的是对宝石友好的ID,目前我必须进行2次保存才能保存slug

我觉得这不太对

class Contractor < ActiveRecord::Base
  include FriendlyId
  friendly_id :slug_candidates, use: :slugged, slug_column: :alias
  after_commit :generate_new_alias, unless: Proc.new {|contractor| contractor.business_name_changed? }


  def slug_candidates
      [
        :business_name,
        [:business_name, :city],
        [:business_name, :city, :state]
      ]
  end

  def generate_new_alias
    if self.alias != self.alias_was
      self.alias = nil
      self.save
    end
  end

end
class承包商

知道我做错了什么吗?

你为什么要这么做?这是友好id推荐的吗?看起来这是个糟糕的做法。我真的不明白为什么要使用generate\u new\u alias方法。我会放弃该方法,删除slug_column::alias和after_commit调用。@rails4guides.com如果我删除
slug_column::alias
,那么friendly_id不知道检查slug的列。如果我在提交后删除它,它将不会重新生成别名。我使用它时不必指定别名。您是否按照以下说明操作:?@rails4guides.com我们使用了一个levacy数据库,因此,我别无选择,只能指定要使用的wich列。此外,指令还指出,保存记录时不再重新生成段塞。如果要重新生成slug,必须显式地将slug列设置为nil
,但如果在before_commit上这样做,则会出现mysql错误,因为别名不能为null。