current_user
, user_signed_in?
и т.д. не доступны в модели.
Rails 3 devise, current_user is not accessible in a Model ?
Короче говоря, ваши ориентированные на пользователя условия должны быть в контроллер, модель тянуть & манипулировать данными только ...
я отправляю этот образ все время; он показывает, как выглядит стандарт MVC. Rails is MVC framework ... показывает вам, как модель и другие элементы работают вместе, чтобы заставить ее работать исправно.
Как вы можете видеть, контроллер действует как «хаб», который склеивает все это вместе. Чтобы ваше приложение структурировалось правильно, вы в идеале хотите поместить свою логику среднего уровня в контроллер, логику уровня данных в вашу модель и поверхностную логику в свое мнение.
EG:
#Model
class Products
belongs_to :user
end
#controller
def index
@products = user_signed_in? ? current_user.products : Product.all
end
#view
<% @products.each do |product| %>
<%= product.name if product.name %>
<% end %>
Ответ Вам нужно указать логику проверки вам требуется, что позволяет применять необходимые данные в контроллере/модель
Если вы хотите использовать пользователя в модели, вам необходимо будет использовать условия на уровне контроллера и передать результаты в модель:
#app/controllers/users_controller.rb
class UsersController < ApplicationController
def create
@user = User.new user_params
@user.online = user_signed_in?
end
private
def user_params
params.require(:user).permit(:x, :y, :z)
end
end
#app/models/user.rb
class User < ActiveRecord::Base
validates :online, presence: true
end
Эй я думаю, вы можете попробовать '' if' и elsif' –