我有一个控制器正在从Contacts表中查找一组Contacts。目前它看起来像这样:
@contacts = @campaign.contacts.find(:all, :order => "date_entered ASC")
contact.rb(Model)中的方法是:
def status
return if statuses.empty?
a= statuses.find(:last).status << ' (' << statuses.find(:last).created_at.to_s(:long) << ')'
return a
end
在大多数情况下,如果“状态”中有值,我不再希望在视图中显示它。
现在,状态是多态的。这可能是一个愚蠢的想法,但我希望状态的概念适用于不同的模型:
class Status < ActiveRecord::Base
attr_accessible :statusable_id, :statusable_type, :status
belongs_to :statusable, :polymorphic => true
end
# == Schema Information
#
# Table name: statuses
#
# id :integer not null, primary key
# statusable_id :integer
# statusable_type :string(255)
# status :string(255)
# created_at :datetime
# updated_at :datetime
#
我假设如果我可以将这个条件添加到@contacts实例,那将会处理它。但我不知道如何在.find方法的控制器中编写该条件(如果这是正确的方法)。
感谢。
答案 0 :(得分:2)
我假设contact has_many statuses
。我不确定应用程序的其余部分,但是根据您上面给出的代码,您似乎只对最后一个状态感兴趣,因此您可能最好不要使用{{1关联。
但是,假设对于某些其他要求,您确实需要has_many关联,在这种情况下,您所做的事情似乎是合理的。
答案 1 :(得分:0)
要扩展NM的答案,为什么不联系has_one latest_status关系,然后找到使用:join选项?它记录在http://api.rubyonrails.org/classes/ActiveRecord/Base.html的Active Record Base页面中,只搜索:join。
如果您搜索已连接的表格,并且您已将该关系定义为最新状态,那么您可以拥有所需内容,对吧?