Ruby on rails 范围内的多个条件rails 4

Ruby on rails 范围内的多个条件rails 4,ruby-on-rails,ruby,scope,ruby-on-rails-4,Ruby On Rails,Ruby,Scope,Ruby On Rails 4,我正在尝试编写一个范围,它将从两个模型中获取数据,以前从未这样做过,因此希望看看是否有人可以在理论和实践方面帮助我 我的两个模型是这样定义的 class Member < ActiveRecord::Base belongs_to :membership accepts_nested_attributes_for :membership attr_accessible :membership_id, :forename, :middlename, :surname, :house_no,

我正在尝试编写一个范围,它将从两个模型中获取数据,以前从未这样做过,因此希望看看是否有人可以在理论和实践方面帮助我

我的两个模型是这样定义的

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
end

class Membership < ActiveRecord::Base
has_many :members, :dependent => :destroy
attr_accessible :membership_type, :cost 
end
类成员:destroy
可访问属性:成员类型,:成本
结束
我想让今天加入的所有成员整理一下它产生的总金额(以英镑计)

那么,我可以在一个范围内执行求和,还是必须编写一个方法来获取总数,然后在该范围内使用该方法

class Member < ActiveRecord::Base

scope :new_memberships_cash_today, ->() {
where(:start_date => Date.today)
}

end
类成员(){
其中(:开始日期=>date.today)
}
结束

到目前为止,这是我所知道的,不正确。我真的不知道如何构建其余部分,任何帮助都很感激

我想这样的东西就足够了:

joins(:memberships).where(:start_date => Date.today).sum('memberships.cost')

啊,我明白了,谢谢,虽然我得到了未定义的方法“to_key”,因为值存储为浮点而不是整数。有什么想法吗?你使用什么数据库?MySQL,Postgres?我有一种感觉,你使用了错误的列类型,因为这应该是可行的。但是作为一个丑陋的替代方案,您可以尝试这样做:
加入(:memberships)。其中(:start_date=>date.today)。选择('memberships.cost')。映射(&:cost)。注入(:+)
。选择('ROUND(SUM(memberships.cost),2)
我在考虑列类型时,使用了17.99和19.99等值,所以一个整数会把这些数字四舍五入,不是吗?使用十进制(5,2)或类似的东西:)