2012-07-26 80 views
0

做了题为范围:命名范围工作,但协会不

class Activity 
    scope :active, where("active = ?", true) 

    has_many :attachments, :as => :attachable 
    accepts_nested_attributes_for :attachments 
end 

a = Activity.active做工精细但联想a.attachments没有(NoMethodError:未定义的方法`附件)

+0

呼吁附件时你为什么会想到内属于一个活动访问附件范围(即在活动的集合) – 2012-07-26 06:24:11

回答

0

当你引用一个这样的范围,你会得到一个ActiveRecord::Relation对象,而不是一个模型实例,这就是为什么Rails抱怨没有关联方法。你可以做这样的事情,例如

a.first.attachments 

att = a.includes(:attachments) 

,然后这个集合

att[0].attachments 
+0

嗨,它不适合我。这是我的代码 类的事:可附接\t \t accepts_nested_attributes_for:附件 \t范围:homepage_city,其中( “?homepage_city =”,真) 端 类活性:可连接\t \t accepts_nested_attributes_for:附件 结束 – Remco 2012-07-27 14:34:56

+0

嗨,它不会为我工作。这是我的代码 类事情 belongs_to的:城市 的has_many:附件,:为=>:可附接\t \t范围:homepage_city,其中( “homepage_city =?”,真) 类活动 \t belongs_to的:城市 \t范围:homepage_city,其中( “homepage_city =?”,真) \t的has_many:附件,:为=>:可附接\t \t 控制器 @deals = Activity.homepage_city + Thing.homepage_city @att = @ deals.includes(:附件) 查看 - @ deals.each do | a | = image_tag(a.file.url) 我得到错误“未定义的方法'包括'”我做错了什么? Ciao..remco – Remco 2012-07-27 14:42:50

+0

这条语句:'@deals = Activity.homepage_city + Thing.homepage_city'将'@ deals'转换为'Array'(因为+),所以你不能再束缚条件了。您必须对'Thing'和'Activity'模型执行两个单独的查询,或者对父模型使用STI和查询(但我不确定它适合您的情况)。 – HargrimmTheBleak 2012-07-27 14:57:33