rails enum, load enum values based on condition is it possible? -


lets have model enum :

class apt < activerecord::base   enum apt_status: [ :draft, :publish, :unpublish, :waiting ]  end 

and in controller load enum :

@apt_statuses = apt.apt_statuses 

it's working fine, if want load enum values based on user role? lets if admin want load enum values, , if not admin, display 3 enum values

":draft, :unpublish, :waiting"

is possible? please suggest. many thanks.

btw here controller, have no idea how fill

@apt_statuses

in else condition

       ishaveprivilage = usermaster.joins(:rolemasters, :rolemasters).where(id: @current_user.id, rolemasters: {name: "super admin"})      if ishaveprivilage         @apt_statuses = apt.apt_statuses    else     end 

i use enum in view :

 <%= f.select :apt_status, options_for_select(@apt_statuses.collect { |s| [s[0].humanize, s[0]] }, selected: @apt.apt_status), {} , class: "form-control" %> 

error trace :

nomethoderror in admin::apts#new showing c:/users/lenovo/documents/urbanace/urbanacecode/app/views/admin/apts/_form.html.erb line #134 raised:  undefined method `humanize' :draft:symbol trace of template inclusion: app/views/admin/apts/new.html.erb  rails.root: c:/users/lenovo/documents/urbanace/urbanacecode  application trace | framework trace | full trace app/views/admin/apts/_form.html.erb:134:in `block (2 levels) in _app_views_admin_apts__form_html_erb___8345113_90629556' app/views/admin/apts/_form.html.erb:134:in `each' app/views/admin/apts/_form.html.erb:134:in `collect' app/views/admin/apts/_form.html.erb:134:in `block in _app_views_admin_apts__form_html_erb___8345113_90629556' actionview (4.2.7) lib/action_view/helpers/capture_helper.rb:38:in `block in capture' actionview (4.2.7) lib/action_view/helpers/capture_helper.rb:202:in `with_output_buffer' actionview (4.2.7) lib/action_view/helpers/capture_helper.rb:38:in `capture' actionview (4.2.7) lib/action_view/helpers/form_helper.rb:444:in `form_for' app/views/admin/apts/_form.html.erb:57:in `_app_views_admin_apts__form_html_erb___8345113_90629556' actionview (4.2.7) lib/action_view/template.rb:145:in `block in render' activesupport (4.2.7) lib/active_support/notifications.rb:166:in `instrument' actionview (4.2.7) lib/action_view/template.rb:333:in `instrument' actionview (4.2.7) lib/action_view/template.rb:143:in `render' actionview (4.2.7) lib/action_view/renderer/partial_renderer.rb:339:in `render_partial' actionview (4.2.7) lib/action_view/renderer/partial_renderer.rb:310:in `block in render' actionview (4.2.7) lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument' activesupport (4.2.7) lib/active_support/notifications.rb:164:in `block in instrument' activesupport (4.2.7) lib/active_support/notifications/instrumenter.rb:20:in `instrument' activesupport (4.2.7) lib/active_support/notifications.rb:164:in `instrument' actionview (4.2.7) lib/action_view/renderer/abstract_renderer.rb:39:in `instrument' actionview (4.2.7) lib/action_view/renderer/partial_renderer.rb:309:in `render' actionview (4.2.7) lib/action_view/renderer/renderer.rb:51:in `render_partial' actionview (4.2.7) lib/action_view/helpers/rendering_helper.rb:35:in `render' app/views/admin/apts/new.html.erb:2:in `_app_views_admin_apts_new_html_erb__809278863_96977256' actionview (4.2.7) lib/action_view/template.rb:145:in `block in render' activesupport (4.2.7) lib/active_support/notifications.rb:166:in `instrument' actionview (4.2.7) lib/action_view/template.rb:333:in `instrument' actionview (4.2.7) lib/action_view/template.rb:143:in `render' actionview (4.2.7) lib/action_view/renderer/template_renderer.rb:54:in `block (2 levels) in render_template' actionview (4.2.7) lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument' activesupport (4.2.7) lib/active_support/notifications.rb:164:in `block in instrument' activesupport (4.2.7) lib/active_support/notifications/instrumenter.rb:20:in `instrument' activesupport (4.2.7) lib/active_support/notifications.rb:164:in `instrument' actionview (4.2.7) lib/action_view/renderer/abstract_renderer.rb:39:in `instrument' actionview (4.2.7) lib/action_view/renderer/template_renderer.rb:53:in `block in render_template' actionview (4.2.7) lib/action_view/renderer/template_renderer.rb:61:in `render_with_layout' actionview (4.2.7) lib/action_view/renderer/template_renderer.rb:52:in `render_template' actionview (4.2.7) lib/action_view/renderer/template_renderer.rb:14:in `render' actionview (4.2.7) lib/action_view/renderer/renderer.rb:46:in `render_template' actionview (4.2.7) lib/action_view/renderer/renderer.rb:27:in `render' actionview (4.2.7) lib/action_view/rendering.rb:100:in `_render_template' actionpack (4.2.7) lib/action_controller/metal/streaming.rb:217:in `_render_template' actionview (4.2.7) lib/action_view/rendering.rb:83:in `render_to_body' actionpack (4.2.7) lib/action_controller/metal/rendering.rb:32:in `render_to_body' actionpack (4.2.7) lib/action_controller/metal/renderers.rb:37:in `render_to_body' actionpack (4.2.7) lib/abstract_controller/rendering.rb:25:in `render' actionpack (4.2.7) lib/action_controller/metal/rendering.rb:16:in `render' actionpack (4.2.7) lib/action_controller/metal/instrumentation.rb:44:in `block (2 levels) in render' activesupport (4.2.7) lib/active_support/core_ext/benchmark.rb:12:in `block in ms' c:/railsinstaller/ruby2.2.0/lib/ruby/2.2.0/benchmark.rb:303:in `realtime' activesupport (4.2.7) lib/active_support/core_ext/benchmark.rb:12:in `ms' actionpack (4.2.7) lib/action_controller/metal/instrumentation.rb:44:in `block in render' actionpack (4.2.7) lib/action_controller/metal/instrumentation.rb:87:in `cleanup_view_runtime' activerecord (4.2.7) lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime' actionpack (4.2.7) lib/action_controller/metal/instrumentation.rb:43:in `render' remotipart (1.2.1) lib/remotipart/render_overrides.rb:14:in `render_with_remotipart' actionpack (4.2.7) lib/action_controller/metal/implicit_render.rb:10:in `default_render' actionpack (4.2.7) lib/action_controller/metal/implicit_render.rb:5:in `send_action' actionpack (4.2.7) lib/abstract_controller/base.rb:198:in `process_action' actionpack (4.2.7) lib/action_controller/metal/rendering.rb:10:in `process_action' actionpack (4.2.7) lib/abstract_controller/callbacks.rb:20:in `block in process_action' activesupport (4.2.7) lib/active_support/callbacks.rb:117:in `call' activesupport (4.2.7) lib/active_support/callbacks.rb:117:in `call' activesupport (4.2.7) lib/active_support/callbacks.rb:555:in `block (2 levels) in compile' activesupport (4.2.7) lib/active_support/callbacks.rb:505:in `call' activesupport (4.2.7) lib/active_support/callbacks.rb:505:in `call' activesupport (4.2.7) lib/active_support/callbacks.rb:92:in `__run_callbacks__' activesupport (4.2.7) lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks' activesupport (4.2.7) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (4.2.7) lib/abstract_controller/callbacks.rb:19:in `process_action' actionpack (4.2.7) lib/action_controller/metal/rescue.rb:29:in `process_action' actionpack (4.2.7) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action' activesupport (4.2.7) lib/active_support/notifications.rb:164:in `block in instrument' activesupport (4.2.7) lib/active_support/notifications/instrumenter.rb:20:in `instrument' activesupport (4.2.7) lib/active_support/notifications.rb:164:in `instrument' actionpack (4.2.7) lib/action_controller/metal/instrumentation.rb:30:in `process_action' actionpack (4.2.7) lib/action_controller/metal/params_wrapper.rb:250:in `process_action' activerecord (4.2.7) lib/active_record/railties/controller_runtime.rb:18:in `process_action' actionpack (4.2.7) lib/abstract_controller/base.rb:137:in `process' actionview (4.2.7) lib/action_view/rendering.rb:30:in `process' actionpack (4.2.7) lib/action_controller/metal.rb:196:in `dispatch' actionpack (4.2.7) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch' actionpack (4.2.7) lib/action_controller/metal.rb:237:in `block in action' actionpack (4.2.7) lib/action_dispatch/routing/route_set.rb:74:in `call' actionpack (4.2.7) lib/action_dispatch/routing/route_set.rb:74:in `dispatch' actionpack (4.2.7) lib/action_dispatch/routing/route_set.rb:43:in `serve' actionpack (4.2.7) lib/action_dispatch/journey/router.rb:43:in `block in serve' actionpack (4.2.7) lib/action_dispatch/journey/router.rb:30:in `each' actionpack (4.2.7) lib/action_dispatch/journey/router.rb:30:in `serve' actionpack (4.2.7) lib/action_dispatch/routing/route_set.rb:817:in `call' rack (1.6.4) lib/rack/etag.rb:24:in `call' rack (1.6.4) lib/rack/conditionalget.rb:25:in `call' rack (1.6.4) lib/rack/head.rb:13:in `call' remotipart (1.2.1) lib/remotipart/middleware.rb:27:in `call' actionpack (4.2.7) lib/action_dispatch/middleware/params_parser.rb:27:in `call' actionpack (4.2.7) lib/action_dispatch/middleware/flash.rb:260:in `call' rack (1.6.4) lib/rack/session/abstract/id.rb:225:in `context' rack (1.6.4) lib/rack/session/abstract/id.rb:220:in `call' actionpack (4.2.7) lib/action_dispatch/middleware/cookies.rb:560:in `call' activerecord (4.2.7) lib/active_record/query_cache.rb:36:in `call' activerecord (4.2.7) lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call' activerecord (4.2.7) lib/active_record/migration.rb:377:in `call' actionpack (4.2.7) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' activesupport (4.2.7) lib/active_support/callbacks.rb:88:in `__run_callbacks__' activesupport (4.2.7) lib/active_support/callbacks.rb:778:in `_run_call_callbacks' activesupport (4.2.7) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (4.2.7) lib/action_dispatch/middleware/callbacks.rb:27:in `call' actionpack (4.2.7) lib/action_dispatch/middleware/reloader.rb:73:in `call' actionpack (4.2.7) lib/action_dispatch/middleware/remote_ip.rb:78:in `call' actionpack (4.2.7) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call' web-console (2.3.0) lib/web_console/middleware.rb:28:in `block in call' web-console (2.3.0) lib/web_console/middleware.rb:18:in `catch' web-console (2.3.0) lib/web_console/middleware.rb:18:in `call' actionpack (4.2.7) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' railties (4.2.7) lib/rails/rack/logger.rb:38:in `call_app' railties (4.2.7) lib/rails/rack/logger.rb:20:in `block in call' activesupport (4.2.7) lib/active_support/tagged_logging.rb:68:in `block in tagged' activesupport (4.2.7) lib/active_support/tagged_logging.rb:26:in `tagged' activesupport (4.2.7) lib/active_support/tagged_logging.rb:68:in `tagged' railties (4.2.7) lib/rails/rack/logger.rb:20:in `call' actionpack (4.2.7) lib/action_dispatch/middleware/request_id.rb:21:in `call' rack (1.6.4) lib/rack/methodoverride.rb:22:in `call' rack (1.6.4) lib/rack/runtime.rb:18:in `call' activesupport (4.2.7) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call' rack (1.6.4) lib/rack/lock.rb:17:in `call' actionpack (4.2.7) lib/action_dispatch/middleware/static.rb:120:in `call' rack (1.6.4) lib/rack/sendfile.rb:113:in `call' railties (4.2.7) lib/rails/engine.rb:518:in `call' railties (4.2.7) lib/rails/application.rb:165:in `call' rack (1.6.4) lib/rack/lock.rb:17:in `call' rack (1.6.4) lib/rack/content_length.rb:15:in `call' rack (1.6.4) lib/rack/handler/webrick.rb:88:in `service' c:/railsinstaller/ruby2.2.0/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service' c:/railsinstaller/ruby2.2.0/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run' c:/railsinstaller/ruby2.2.0/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread' request  parameters:  none toggle session dump _csrf_token: "dk6t1ouvbdmwzlihvgktzfiqso7gx3qt5iq5zhya7lm=" session_id: "2391dc6faaafcd52ee1815ccbe115daf" user_id: 7 toggle env dump gateway_interface: "cgi/1.1" http_accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" http_accept_encoding: "gzip, deflate, sdch" http_accept_language: "en-us,en;q=0.8" http_cache_control: "max-age=0" remote_addr: "127.0.0.1" remote_host: "127.0.0.1" server_name: "localhost" server_protocol: "http/1.1" response  headers:  none x >>    

i think solve so:

class apt < activerecord::base   enum status: [:draft, :publish, :unpublish, :waiting]    def self.user_specific_statuses(user)     if user.admin? # define method in user model defines this.       apt.statuses     else       apt.statuses.reject { |k, v| k == "publish" } # => except publish     end   end end 

and call this:

apt.user_specific_statuses(admin_user) # => statuses apt.user_specific_statuses(normal_user) # => draft, unpublish, waiting 

Comments

Popular posts from this blog

javascript - Thinglink image not visible until browser resize -

firebird - Error "invalid transaction handle (expecting explicit transaction start)" executing script from Delphi -

mongodb - How to keep track of users making Stripe Payments -