在 Rails 4 中循环后始终为 nil
After loop always nil in Rails 4
当我尝试循环 rails 数组时,我仍然没有,即使数组已经定义。
代码:
def gen_address
current_user.accounts.each do |account|
abort(@account.inspect)
next if not account.currency_obj.coin?
if account.payment_addresses.blank?
account.payment_addresses.create(currency: account.currency)
else
address = account.payment_addresses.last
address.gen_address if address.address.blank?
end
end
render nothing: true
end
current_user.accounts 有包含三个项目的数组。 abort 仅用于测试。
current_user.accounts 有:
#<ActiveRecord::Associations::CollectionProxy [#<Account id: 14, member_id: 3, currency: nil, balance: 0.0, locked: 0.0, created_at: "2017-05-23 08:50:11", updated_at: "2017-05-23 08:50:16", in: nil, out: nil, default_withdraw_fund_source_id: nil>, #<Account id: 5, member_id: 3, currency: "btc", balance: 0.0, locked: 0.0, created_at: "2017-05-03 08:37:19", updated_at: "2017-05-03 08:37:19", in: nil, out: nil, default_withdraw_fund_source_id: nil>, #<Account id: 6, member_id: 3, currency: "ltc", balance: 0.0, locked: 0.0, created_at: "2017-05-03 08:37:19", updated_at: "2017-05-03 08:37:19", in: nil, out: nil, default_withdraw_fund_source_id: nil>, #<Account id: 13, member_id: 3, currency: "eth", balance: 0.0, locked: 0.0, created_at: "2017-05-23 08:42:29", updated_at: "2017-05-23 08:42:35", in: nil, out: nil, default_withdraw_fund_source_id: nil>]>
帐户始终为零
currency_obj 是:
module HashCurrencible
extend ActiveSupport::Concern
included do
def currency_obj
Currency.find_by_code(attributes[:currency])
end
end
end
如果不是account.currency_obj.coin,我会在下一行收到此错误,当删除中止时:
undefined method `coin?' for nil:NilClass
变量 account 的作用域仅限于循环。所以它在循环外将是零。
currenc_obj
是nil
,所以无法响应coin?
方法;检查这一行:
#<Account id: 14, member_id: 3, currency: nil, balance: 0.0, locked: 0.0, created_at: "2017-05-23 08:50:11", updated_at: "2017-05-23 08:50:16", in: nil, out: nil, default_withdraw_fund_source_id: nil
在您的第一个 Account
对象中,属性 :currency
是 nil
因此方法 currency_obj
也将 return nil
。
当我尝试循环 rails 数组时,我仍然没有,即使数组已经定义。
代码:
def gen_address
current_user.accounts.each do |account|
abort(@account.inspect)
next if not account.currency_obj.coin?
if account.payment_addresses.blank?
account.payment_addresses.create(currency: account.currency)
else
address = account.payment_addresses.last
address.gen_address if address.address.blank?
end
end
render nothing: true
end
current_user.accounts 有包含三个项目的数组。 abort 仅用于测试。
current_user.accounts 有:
#<ActiveRecord::Associations::CollectionProxy [#<Account id: 14, member_id: 3, currency: nil, balance: 0.0, locked: 0.0, created_at: "2017-05-23 08:50:11", updated_at: "2017-05-23 08:50:16", in: nil, out: nil, default_withdraw_fund_source_id: nil>, #<Account id: 5, member_id: 3, currency: "btc", balance: 0.0, locked: 0.0, created_at: "2017-05-03 08:37:19", updated_at: "2017-05-03 08:37:19", in: nil, out: nil, default_withdraw_fund_source_id: nil>, #<Account id: 6, member_id: 3, currency: "ltc", balance: 0.0, locked: 0.0, created_at: "2017-05-03 08:37:19", updated_at: "2017-05-03 08:37:19", in: nil, out: nil, default_withdraw_fund_source_id: nil>, #<Account id: 13, member_id: 3, currency: "eth", balance: 0.0, locked: 0.0, created_at: "2017-05-23 08:42:29", updated_at: "2017-05-23 08:42:35", in: nil, out: nil, default_withdraw_fund_source_id: nil>]>
帐户始终为零
currency_obj 是:
module HashCurrencible
extend ActiveSupport::Concern
included do
def currency_obj
Currency.find_by_code(attributes[:currency])
end
end
end
如果不是account.currency_obj.coin,我会在下一行收到此错误,当删除中止时:
undefined method `coin?' for nil:NilClass
变量 account 的作用域仅限于循环。所以它在循环外将是零。
currenc_obj
是nil
,所以无法响应coin?
方法;检查这一行:
#<Account id: 14, member_id: 3, currency: nil, balance: 0.0, locked: 0.0, created_at: "2017-05-23 08:50:11", updated_at: "2017-05-23 08:50:16", in: nil, out: nil, default_withdraw_fund_source_id: nil
在您的第一个 Account
对象中,属性 :currency
是 nil
因此方法 currency_obj
也将 return nil
。