ruby-on-rails - 在 Rails 控制台中使用 fixture finder helpers

标签 ruby-on-rails ruby console fixtures

我经常发现我希望能够从 Rails 控制台使用测试 fixture 查找器(例如 users(:david))。有没有我可以在控制台提示符下加载的特定 Rails 模块,或者我可以安装的 gem,使它们可用?

我对 Google Oracle 的查询没有任何结果,所以我没有屏住呼吸,但我希望 SO 上有人知道一个 secret 并愿意分享。

最佳答案

我自己想出来了。 这适用于 IRB 和 Pry . 只需将以下行添加到我的 .irbrc(和/或 .pryrc)文件即可。

require 'active_record/fixtures'

def method_missing(method_name, *args, &block)
  if fixture_names.include?(method_name)
    method_name.to_s.singularize.titleize.constantize.find(fixture_id(args[0]))
  else
    super
  end
end

def fixture_id(label)
  ActiveRecord::FixtureSet.identify(label)
end

def fixture_names
  Dir["#{Rails.root}/test/fixtures/*.yml"].map { |filename| filename.match(/\/([^\/]+)\.yml/)[1].to_sym }
end

现在,假设有一个 test/fixtures/users.yml 文件,它包含一个名为 diane: 的 fixture,然后 users(:diane) 从 Rails 控制台成功返回该用户。

m_x 的 answer对原始问题的回答有助于达到这一点。

关于ruby-on-rails - 在 Rails 控制台中使用 fixture finder helpers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8483415/

相关文章:

ruby-on-rails - Heroku,如何知道项目的 ruby​​ 版本?

ruby-on-rails - 选择在 Rails 的列中具有最高值的记录

ruby - 在Ruby中获取组在正则表达式中的值

java - 从 Java 启动外部控制台应用程序

python - 在 Python 中添加交互性?

C++ cin输入后一直在线

ruby-on-rails - Rails 4 - 在没有 rake Assets 的情况下无法更改 CSS :precompile which breaks Javascript?

ruby-on-rails - 通过匹配条件从哈希数组中获取电子邮件作为数组

arrays - 如何组合匹配模式的数组中的元素?

ruby - 为什么 bundler 看不到自定义的 gem 源?