Ruby on rails 我可以在Rails中的其他设备之前加载一些设备,以便在联接表中循环它们吗?
MyRails(4.2.11.1)应用程序具有Ruby on rails 我可以在Rails中的其他设备之前加载一些设备,以便在联接表中循环它们吗?,ruby-on-rails,ruby,minitest,fixtures,Ruby On Rails,Ruby,Minitest,Fixtures,MyRails(4.2.11.1)应用程序具有用户模型和角色模型。在我的fixture中,我有一个users_roles.yml文件,我希望通过循环roles.yml中的所有fixture来填充该文件,并将其分配给特定用户。我正在使用下面的块执行此操作: 用户\u角色.yml <% Role.all.each do |role| %> <%= 'super_test_user' + role.name %>: user_id: <%= ActiveRecord:
用户
模型和角色
模型。在我的fixture中,我有一个users_roles.yml文件,我希望通过循环roles.yml中的所有fixture来填充该文件,并将其分配给特定用户。我正在使用下面的块执行此操作:
用户\u角色.yml
<% Role.all.each do |role| %>
<%= 'super_test_user' + role.name %>:
user_id: <%= ActiveRecord::FixtureSet.identify(:super_test_user) %>
role_id: <%= ActiveRecord::FixtureSet.identify(role.name.to_sym) %>
<% end %>
我在上面做了什么错事吗?或者我还有别的方法可以做到这一点吗
编辑:我还应该添加这样加载装置的原因,因为这个Rails应用程序(我们称之为“a”)是从另一个Rails应用程序(B)调用的。因此,在应用程序“B”在测试环境中调用测试数据库之前,需要将“A”中的测试夹具加载到测试数据库中。好的-因此我找到了一个解决方案,虽然有点老套,但它可以工作。如果其他人遇到同样的问题,我会在这里发布:
RAILS\u ENV=test rake db:fixtures:load fixtures=roles
RAILS\u ENV=test rake db:fixtures:load
角色
对象中引用
不过,我更希望在test_helper.rb文件中自动执行此操作。你知道我该怎么做吗?好的-我找到了一个解决方案,虽然有点老套,但很有效。如果其他人遇到同样的问题,我会在这里发布:
RAILS\u ENV=test rake db:fixtures:load fixtures=roles
RAILS\u ENV=test rake db:fixtures:load
角色
对象中引用
不过,我更希望在test_helper.rb文件中自动执行此操作。你知道我该怎么做吗
class ActiveRecord::FixtureSet
class << self
alias :orig_create_fixtures :create_fixtures
end
def self.create_fixtures f_dir, fs_names, *args
Role.delete_all
User.delete_all
reset_cache
fs_names = %w(role user) & fs_names | fs_names
orig_create_fixtures f_dir, fs_names, *args
end
end