在rails 4中,有一个类似的模型:
class User < ActiveRecord::Base
has_many :groups
has_many :contents, through: :groups
has_many :content_masks
has_many(
:hidden_contents,
through: :content_masks,
source: :content,
class_name: "Content"
)
has_many(
:visible_contents,
->{ where("contents.id NOT IN (#{hidden_contents.select('contents.id').to_sql})") },
through: :groups,
class_name: "Content"
)
end
但是,我无法从hidden_contents
关系访问visible_contents
关系。这可能吗?
似乎在特定实例上调用了关系,我应该能够以某种方式访问它,对吧?
答案 0 :(得分:0)
需要查看一些示例代码,但假设您尝试执行类似User.visible_contents.hidden_contents
的操作,则会出现某种错误。这是因为visible_contents
返回AR关系,它不包含任何模型定义的关系(所以没有,在最严格的意义上回答你的问题,你不能这样做)。
但是,您可以使用以下内容:User.visibile_contents.first.hidden_contents
或User.visible_contents.map(&:hidden_contents)
。如果不确切知道你想要做什么,很难准确回答这个问题。