我對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
啊,好嗎?它似乎工作。 –