I am struggling to check returned enum value. In models/roles.rb I have enums:
class Role < ApplicationRecord
belongs_to :user, optional: true
accepts_nested_attributes_for :user
enum general: { seller: 1, buyer: 2, seller_buyer: 3}, _suffix: true
enum dashboard: { denied: 0, viewer: 1, editer: 2, creater: 3, deleter: 4}, _suffix: true
In controllers/dashboard_controller.rb I have this:
class DashboardsController < ApplicationController
def dashboard_1
@roles = current_user.roles
Role.select(:dashboard).where(user_id: current_user)
if
flash.now[:error] = "You can do whatever want!"
else
flash.now[:error] = "Only view!"
end
end
In console I can get this:
Role.select(:dashboard).where(:user_id => 1)
Role Load (0.3ms) SELECT "roles"."dashboard" FROM "roles" WHERE "roles"."user_id" = ? [["user_id", 1]]`=> #<ActiveRecord::Relation [#<Role id: nil, dashboard: "deleter">]>`
where dashboard: "deleter" is my desired outcome. I want to check in controller that if user role for dashboard is "deleter" (flash.now says "You can do whatever want!"
Please, any suggestions how to do this? Many thanks!
UPDATE
This is my controllers/dashboard_controller.rb
def dashboard_1
@roles = current_user.roles
if @roles.any? { |role| role.deleter_dashboard? }
flash.now[:error] = "You are deleter!"
elsif @roles.any? { |role| role.viewer_dashboard? }
flash.now[:error] = "You are viewer!"
else
redirect_to users_path
end
end
In dashboard_1.html.erb I try to show "New campaign" button only if user is "deleter" for Dashboard section:
<% if @roles.deleter_dashboard? %>
<%= link_to new_campaign_path(@campaign), {method: 'get', class: 'btn btn-w-m btn-primary'} do %>New campaign
<% end %>
<% end %>
However I keep getting this error - undefined method deleter_dashboard? for Role::ActiveRecord_Associations_CollectionProxy How do I make it working right?
` `<% if role.creater_campaigns? || role.deleter_campaigns? %>` `<%= link_to new_campaign_path(@campaign), {method: 'get', class: 'btn btn-w-m btn-primary'} do %>New campaign` `<% end %>` `<% end %>` `
` Please, can you check what am I doing wrong? – matiss Oct 03 '16 at 18:12