我经常发现我希望能够从 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/