将对象传递给has_many:conditions

时间:2009-10-30 15:20:11

标签: ruby-on-rails ruby

我需要将self作为对象而不是类传递给:condition string,有没有办法做到这一点?

has_many :topic,
:class => 'FileTopic',
:conditions => "id in (select * from file_topics where program_id = #{self.id})"

我的问题是自己总是给我类的id但不是类的实例。我想has_many是在班级评估的吗?

由于

2 个答案:

答案 0 :(得分:2)

在加载课程时评估,是的。但是,只有在使用双引号时 - 单引号字符串中的变量才会在调用时填充。 More info here.

但是,也许您应该查看named scopes

答案 1 :(得分:2)

有很多是一种类方法。因此,在其参数中对self的任何引用都是对类的引用。

看起来你想要在belongs_to方面指定外键。

你有没有试过这个:

has_many :topic, :class => 'FileTopic', :foreign_key => "program_id"

如果你还没有,你应该真正阅读ActiveRecord::Associations documentation。使用适当的belongs_to / has_one / has_many选项集无法解决很少的关联问题

相关问题