我似乎無法得到一個範圍的結果顯示在我看來,因爲我得到這個錯誤消息。我試圖獲得所有的會員數量爲一天加起來並顯示爲總共缺少屬性錯誤Rails
missing attribute: membership_id
我的模型和範圍
class Member < ActiveRecord::Base
belongs_to :membership
accepts_nested_attributes_for :membership
attr_accessible :membership_id, :forename, :middlename, :surname, :house_no, :house_name, :street, :town, :postcode, :home_tel, :mobile_tel, :work_tel, :email, :start_date, :expiry_date
scope :new_memberships_cash_today, ->() {
joins(:membership).where(:start_date => Date.today).select('ROUND(SUM(memberships.cost), 2)')
}
end
class Membership < ActiveRecord::Base
has_many :members, :dependent => :destroy
attr_accessible :membership_type, :cost
end
然後我看來
columns do
#Total amount in £ for New Memberships today
column do
panel "Cash Today", :class => 'NewAmountMemberships' do
table_for Member.new_memberships_cash_today do
column 'Total cash' do |c|
c.membership.map { |e| [e.cost, e.id] }
end
end
end
end
end
一些看完後W似乎可能有我的選擇範圍內的呼叫有問題,因爲我需要指定所有的模型屬性以使用Active Record成功呼叫?
因爲我內選擇我不確定如何增加更多的屬性,如果是這樣,即使
任何幫助表示讚賞
我已經運行在控制檯與此範圍內的情況下執行總和是什麼返回
Member Load (0.1ms) SELECT ROUND(SUM(memberships.cost), 2) FROM `members` INNER JOIN `memberships` ON `memberships`.`id` = `members`.`membership_id` WHERE `members`.`start_date` = '2013-12-13'
=> #<ActiveRecord::Relation [#<Member id: nil>]>
你的範圍返回一個對象,唯一可以從該對象訪問的東西就是總和。我可以看到你試圖從範圍訪問對象的成員資格。由於它沒有membership_id,你得到的錯誤 – usha
謝謝,所以有關如何調整我的範圍,仍然返回成本模型中列成本的總和的想法? – Richlewis
'attr_accessible:membership_id'是非常不好的做法!不應通過params訪問關聯的ID。這將允許精明的用戶將會員與任意的會員關聯起來。 –