从 Rails 4.2 开始,友好 ID 不起作用?
Friendly ID not working as of Rails 4.2?
我最近升级到 rails 4.2,我发现友好 ID 停止工作。不确定这是一个错误,还是我只是在使用友好 ID 上失败了。
更新后我的测试开始失败,例如我有以下测试:
context "Fiendly ID" do
it "should find by name" do
permission = FactoryGirl.create(:can_read)
Xaaron::Permission.find(permission.permission_name.parameterize).should_not eql nil
end
end
这个测试从来没有失败过,但现在它吐了:
Failure/Error: Xaaron::Permission.find(permission.permission_name.parameterize).should_not eql nil
ActiveRecord::RecordNotFound:
Couldn't find Xaaron::Permission with 'id'=can_read2
# ./.bundle/gems/gems/activerecord-4.2.0/lib/active_record/core.rb:154:in `find'
# ./spec/models/xaaron/permission_spec.rb:21:in `block (3 levels) in <top (required)>'
考虑到这一点,这是我的模型:
module Xaaron
class Permission < ActiveRecord::Base
extend FriendlyId
friendly_id :permission_name, use: [:slugged, :finders, :history]
has_many :roles_permissions
has_many :roles, :through => :roles_permissions
validates :permission_name, presence: true, uniqueness: true
def should_generate_new_friendly_id?
permission_name_changed?
end
end
end
注意 :finders
。我正在为 Friendly ID 运行 5.0.3。这是活动记录的新内容还是我使用 Friendly ID 失败了?
finders
模块与 Rails 4.2 兼容。仅在 5.1。版本(尚未发布)。您当然可以已经测试该版本,但请记住它仍处于测试阶段。
gem "friendly_id", "5.1.0.beta.1"
我最近升级到 rails 4.2,我发现友好 ID 停止工作。不确定这是一个错误,还是我只是在使用友好 ID 上失败了。
更新后我的测试开始失败,例如我有以下测试:
context "Fiendly ID" do
it "should find by name" do
permission = FactoryGirl.create(:can_read)
Xaaron::Permission.find(permission.permission_name.parameterize).should_not eql nil
end
end
这个测试从来没有失败过,但现在它吐了:
Failure/Error: Xaaron::Permission.find(permission.permission_name.parameterize).should_not eql nil
ActiveRecord::RecordNotFound:
Couldn't find Xaaron::Permission with 'id'=can_read2
# ./.bundle/gems/gems/activerecord-4.2.0/lib/active_record/core.rb:154:in `find'
# ./spec/models/xaaron/permission_spec.rb:21:in `block (3 levels) in <top (required)>'
考虑到这一点,这是我的模型:
module Xaaron
class Permission < ActiveRecord::Base
extend FriendlyId
friendly_id :permission_name, use: [:slugged, :finders, :history]
has_many :roles_permissions
has_many :roles, :through => :roles_permissions
validates :permission_name, presence: true, uniqueness: true
def should_generate_new_friendly_id?
permission_name_changed?
end
end
end
注意 :finders
。我正在为 Friendly ID 运行 5.0.3。这是活动记录的新内容还是我使用 Friendly ID 失败了?
finders
模块与 Rails 4.2 兼容。仅在 5.1。版本(尚未发布)。您当然可以已经测试该版本,但请记住它仍处于测试阶段。
gem "friendly_id", "5.1.0.beta.1"