我正在尝试为每个实例的变量分配一个新公钥和私钥的数组,这样我就可以生成一个唯一且匹配的比特币地址和签名。
我正在使用bitcoin-ruby gem来生成密钥。
问题在于我无法确定放置key = Bitcoin::generate_key
这是我的工厂没有key = Bitcoin::generate_key
:
FactoryGirl.define do
factory :user do
sequence(:username) { |n| "Person #{n}" }
sequence(:email) { |n| "person_#{n}@example.com" }
bitcoin_address { Bitcoin::pubkey_to_address(key[1]) }
bitcoin_address_signature { BitcoinCigs.sign_message!(key[0], "test") }
password "examplepass"
password_confirmation "examplepass"
end
end
我试图将它放在规范帮助程序中以及文件中的任何位置,但它被忽略或生成语法错误。我最接近的是:
FactoryGirl.define do
factory :user do
sequence(:username) { |n| "Person #{n}" }
sequence(:email) { |n| "person_#{n}@example.com" }
bitcoin_address { key = Bitcoin::generate_key
Bitcoin::pubkey_to_address(key[1]) }
bitcoin_address_signature { key = Bitcoin::generate_key
BitcoinCigs.sign_message!(key[0], "test") }
password "examplepass"
password_confirmation "examplepass"
end
end
这导致bitcoin_address
和bitcoin_address_signature
的不同密钥对。
我还没有找到一种方法让key
对bitcoin_address
和bitcoin_address_signature
的意思相同,同时仍然传递唯一性验证器,我错过了一些明显的或是我这样做完全错了吗?
答案 0 :(得分:1)
使用after(:build)
挂钩:
FactoryGirl.define do
factory :user do
sequence(:username) { |n| "Person #{n}" }
sequence(:email) { |n| "person_#{n}@example.com" }
password "examplepass"
password_confirmation "example pass"
after(:build) do |user|
key = Bitcoin::generate_key
user.bitcoin_address = Bitcoin::pubkey_to_address(key[1])
user.bitcoin_address_signature = BitcoinCigs.sign_message!(key[0], "test")
end
end
end