Ну, хотя я не согласен с использованием одного представления (или одного списка / частичного, более конкретно) для отображения двух разных типов информации, вот способ, которым вы можете сделать то, что вы ищете:
@buckets = Buckets.order("buckets.id ASC").where(:user_id => @user_id, :private => false)
@buckets += @buckets.where(:private => true) if current_user.id == user.id
Вы также можете создать несколько интересных областей для обработки этой полусложной логики в модели, где она должна быть, а также использовать ваши ассоциации более полно:
@user = User.find(params[:user_id])
@buckets = @user.buckets.public
@buckets += @user.buckets.private if @current_user == @user
respond_with @buckets = @buckets.order("buckets.id asc")
и модель Buckets
:
scope :public, where(:private => false)
scope :private, where(:private => true)
В качестве примечания, имена классов моделей всегда должны быть единственными. В вашем примере Buckets
, поэтому, если это не опечатка, я рекомендую вернуться и изменить ее, если это целесообразно. Это приведет к путанице в будущем, особенно для будущих разработчиков вашего приложения.