加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在rails(4.1.5)中为yml.erb创建装置(对于D

发布时间:2020-12-16 20:30:35 所属栏目:百科 来源:网络整理
导读:更新3:看起来这是一个特定于.yml.erb中的灯具 – 即使我没有模板代码,似乎在yml.erb文件中的灯具没有加载.拥有一个普通的.yml文件.这可能与设计本身无关. 注意:有关相关更改,请参阅更新3注释 我需要在我的rails应用程序中生成Devise用户.我注意到清除数据
更新3:看起来这是一个特定于.yml.erb中的灯具 – 即使我没有模板代码,似乎在yml.erb文件中的灯具没有加载.拥有一个普通的.yml文件.这可能与设计本身无关.

注意:有关相关更改,请参阅更新3注释

我需要在我的rails应用程序中生成Devise用户.我注意到清除数据库并加载灯具加载所有其他灯具,除了Devise用户(更新3:位于.yml.erb文件中).

我已经看到了this other thread,但我尝试了所有的选项,仍然似乎没有加载灯具.

# ../fixtures/users.yml.erb
user1:
  email: user1@mysite.com
  name: user1
  encrypted_password: <%= Devise.bcrypt(User,'passw0rd!') %>
  # also tried encrypted_password: User.new(password_salt: '$2a$10$PoBe1MvkoGJsjMVTEjKqge').send(:password_digest,'somepassword')
  admin: true

并从控制台:

要清除测试db:

$bundle exec rake db:schema:load RAILS_ENV=test

要将灯具加载到test db中:

$bundle exec rake db:fixtures:load RAILS_ENV=test

在测试中运行rails控制台(没有找到用户,但正在加载其他模型工具,如App);

$rails c test
Loading test environment (Rails 4.1.5)
irb(main):001:0> User.first
  User Load (0.1ms)  SELECT  "users".* FROM "users"   ORDER BY "users"."id" ASC LIMIT 1
=> nil
irb(main):002:0> App.first
  App Load (0.1ms)  SELECT  "apps".* FROM "apps"   ORDER BY "apps"."id" ASC LIMIT 1
=> #<App id: 953336129,...>

更新1:也尝试传递从控制台生成的加密密码,仍然没有找到用户记录:

admin:
  email: user1@mysite.com
  name: user1
  encrypted_password: $2a$04$DR0.2yfWwD8AZlyeXx0gEuk2Qh.cNLF4cir0ZUB1iW7hwQhK/IfcC
  admin: true

更新2:当我将fixtures文件重命名为users.yml时,它可以正常工作.重命名为users.yml.erb似乎是罪魁祸首. BTW,在控制台和rake测试中,看到同样的行为(即它与.yml,但不适用于yml.erb)

解决方法

你应该用明文传递密码.我确定有一个用户模型验证错误阻止您的夹具用户被创建.以下是我的用户工具的示例:
tom:
  first_name: Tom
  last_name: Test
  email: test@example.org
  password: 123greetings
  encrypted_password: <%= User.new.send(:password_digest,'123greetings') %>

如果仍然失败,请检查log / test.log文件是否有错误,并检查您在User模型中设置的缺少的必填字段或其他验证规则.

更新:原来,作者自己发现了这个问题 – 使用.yml.erb文件扩展名而不是.yml,这使得rails绕过了fixtures文件. ERB在yml灯具中工作,因为rails在解析之前通过ERB运行灯具文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读