1

有,当你想补充一点,涉及已在模型中定义的关系的where子句,你应该调用对象的特殊方式。选择器哪里有关系

一个例子是,我有一个形象,belongs_to的图像或的has_many(无论山石你的船)类别,我要选择没有任何关联的类别中的所有图像。

因此,对于一个简单的belongs_to的我还是说:

Image.where('category_id is null') 

但有没有这样做,因为关系模型中的明确定义的更好的办法?

回答

0

你感觉不舒服的使用wherestring clause?每次使用where时我都有这种感觉。

你也可以做

Image.where(:category_id=>nil)

或使用动态finder方法

Image.find_all_by_category_id(nil)

或负载通过协会 @images = Category.find(some_cat_id).images

(这一个不工作对于无)

我认为他们都应该产生或多或少相同的SQL。

+0

它不是,我觉得不舒服的使用字符串的条款,它只是模型都在那里所以它是有道理的,有引用关系本身,而不是诉诸引用数据库本身。它有种否定了模型的点 – Rumpleteaser 2012-03-01 08:39:56

+0

对不起,我不好措辞。我不习惯使用“字符串”,因为我觉得应该不需要写任何查询。应该全部由模型的协会本身来完成。 – 2012-03-01 12:27:01

0

试试这个:

Image.find(:all, :conditions => 'category_id is null')