我有以下型号:
class Person < ActiveRecord::Base
has_many :images
has_one :preference
end
class Image < ActiveRecord::Base
belongs_to :person
end
class Preference < ActiveRecord::Base
belongs_to :person
end
我正在尝试获取所有公开的图像,同时渴望加载拥有这些图像的人:
Image.find(:all, :conditions => ["images.person_id = ? AND preferences.image_privacy = ?", user.id, PRIVACY_PUBLIC],
:joins => [:person => :user_preference], :include => :person)
看来 Rails 不喜欢 :include (我相信是因为 :person 在 2 个模型中被引用)。这是我得到的错误(当我删除 :include 选项时它消失了):
“ActiveRecord::StatementInvalid: Mysql::Error: Not unique table/alias: 'people'”
我可以通过将实际的 JOIN 命令写为字符串并将其传递给 :include 选项来解决这个问题,但这不是 Rails-y,所以我希望有一种更简洁的方法来做到这一点。
任何帮助将非常感激。
谢谢!