current_user
,user_signed_in?
等不在型號。
Rails 3 devise, current_user is not accessible in a Model ?
總之,你的用戶爲中心的條件,應在控制器,該模型是拉&操縱數據僅 ...
我發佈這個圖像一直在;它顯示了標準框架的外觀。 Rails 是一個MVC框架的 ...向您展示了模型和其他元素如何協同工作以使其正常工作。
正如您所看到的,控制器的作用類似於將所有這些粘合在一起的「集線器」。爲了使您的應用程序結構正確,您最好將您的中級邏輯放入您的控制器,將數據級邏輯放入您的模型中,並將表面邏輯放入您的視圖中。
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' –