我对Ruby on Rails比较新,我觉得我在这里做错了什么。我正在设置一个付款模式,并且无法弄清楚如何执行可访问的属性。Rails可访问属性混淆
我cash_transaction模式有:
attr_accessible :billing_address_line_one, :billing_address_line_2, :billing_city, :billing_country, :billing_post_code, :payee_first_name, :payee_last_name, :card_expiry, :card_type
attr_accessor :card_number, :card_verification
好了,我想提交表单和验证,并可能保存在未来的数据库,如果付款到帐。
如果我在attr_accessible
离开:card_number, :card_verification
,Rails的给出了错误:
*未知属性CARD_NUMBER *
,因为我不希望保存在我的DB这是不够公平的。
当我尝试:
@cash_transaction = current_user.cash_transactions.build(params[:cash_transaction])
我得到一个质量分配安全性错误时,这些参数是不attr_accessible
。
我已经得到了与这两个错误身边:
@cash_transaction = current_user.cash_transactions.build(params[:cash_transaction].except(:card_number, :card_verification))
@cash_transaction.card_number = params[:cash_transaction][:card_number]
@cash_transaction.card_verification = params[:cash_transaction][:card_verification]
但是,这只是一样与这些参数包括建设中的散列反正所以我作弊呢?
什么?
你在做什么看起来完全没问题。 – gylaz
但是,它看起来应该能够批量分配虚拟属性。所以,只要你有'attr_accessor:card_number',你应该可以将它添加到'attr_accessible'并且从'params [:cash_transaction]'中设置它。 – gylaz
啊,好吗?它似乎工作。 –