Jon*_*vin 9 ruby console ruby-on-rails fixtures
我经常发现我希望能够使用users(:david)
Rails控制台中的测试夹具(例如).是否有一个特定的Rails模块,我可以在控制台提示符下加载,或者我可以安装的gem,它会使这些模块可用?
我对谷歌甲骨文的疑问没有改变,所以我没有屏住呼吸,但我希望有人在这里知道一个秘密并愿意分享.
自己搞清楚了.这适用于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
Run Code Online (Sandbox Code Playgroud)
现在,假设有一个test/fixtures/users.yml
文件并且它包含一个名为的夹具diane:
,那么users(:diane)
从Rails控制台成功返回该用户.
m_x 对原始问题的回答有助于达到这一点.