我不想使用复杂的关联来污染我的模型(在AR模型中仅具有必要的验证和简单的关联)
class Post < ActiveRecord::Base
has_many :visible_comments,
-> {
where(deleted_at: nil).joins(:user).where(users: { active: true })
}, class_name: 'Comment'
end
我想将此关联移到帖子的装饰器类中
PostsDecorator.new(posts).preload(:visible_comments)
是否可以创建装饰器类,以便可以在其上声明关联(例如,预加载关联)?
答案 0 :(得分:0)
尚不清楚您要做什么。 “声明其上的关联”(装饰器)很可能是XY Problem。
为什么不做类似的事情:
def fetch_data():
x_sample = np.random.rand(5,4)
a_sample = np.zeros((5,2))
a_sample[0,1] = 1
a_sample[1,1] = 1
a_sample[2,0] = 1
a_sample[3,1] = 1
a_sample[4,0] = 1
return x_sample, a_sample
(或类似的话。)
那么您就可以做到:
class PostsDecorator < SimpleDelegator
def visible_comments
Comment.where(post: component, deleted_at: nil)
end
private
def component
@component ||= self.__getobj__
end
end
关于“预加载”的想法,我不确定该怎么做。