可以吗
current_user.posts.do_changes_and_return_collection
而不是
Post.where(user_id: current_user.id).do_changes_and_return_collection
并处理方法内的集合?
答案 0 :(得分:1)
我相信在Post模型上你想要这样的东西:
def self.do_changes_and_return_collection
update_all(deleted: false) # Just an example.
where(submited: true)
end
您可以致电:submiteds = current_user.posts.do_changes_and_return_collection
注意:update_all
不会触发验证和回调
编辑:获取关系所有者
在User
中,您必须扩展has_many关系:
has_many :posts do
def owner
proxy_association.owner
end
end
调用current_user.posts.owner
您将获得current_user
答案 1 :(得分:0)
是的,这是可能的。因为你必须使用scope
。
实施例
class Post < ActiveRecord::Base
scope :do_changes_and_return_collection, -> { where(active: true) }
end
然后你可以打电话:
Post.where(user_id: current_user.id).do_changes_and_return_collection
请参阅scopes