1
在我最新的rails应用程序中,我有这3个模型 - Entries
,Politician
和Parties
。只是该应用程序是为“政治家”添加“条目”。让我们假设一个条目有(条目name, date
)。记录政界人士的会员身份模型,并记录每个会员的时限。所以会员资格中的记录如下所示。Rails 3与范围:has_many:通过协会
politician_id, party_id, date_from, date_to
该机型
class Politician < ActiveRecord::Base
has_many :memberships
has_many :parties, :through => :memberships do
has_many :entries
end
class Party < ActiveRecord::Base
has_many :memberships
has_many :politicians, :through => :memberships
end
class Membership < ActiveRecord::Base
belongs_to :politician
belongs_to :party
end
现在让我们说我们有政治家ID 148,在表行记录,我需要找到在此基础上进入这个政治家的党员两个表上的日期。假设在会员表中我们有这些记录。我认为它是我必须在这里使用的范围?
politician_id | party_id | date_from | date_to
148 | 10 | 2012-01-22 | 2013-01-22
148 | 16 | 2010-01-21 | 2012-01-21
148 | 45 | 2009-01-19 | 2010-01-20
因为我需要找到给定日期的记录(使用'memberships.from_date'和'memberships.to_date'),我创建范围如下: 'scope:membership_by_date,lambda {| date | where(“(from_date <=?and to_date> =?)OR(from_date <=?and to_date IS NULL)”,日期,日期,日期)这是正确的。如果某人的会员资格是最新的,IS NULL是。 – randika