class RenderSync::ScopeDefinition
Attributes
args[RW]
klass[RW]
lambda[RW]
name[RW]
parameters[RW]
Public Class Methods
ensure_valid_params!(klass, lambda)
click to toggle source
Checks the validity of the parameter names contained in the lambda definition. E.g. if the lambda looks like this:
->(user) { where(user_id: user.id) }
The name of the passed argument (user) must be present as a column name or an instance method (e.g. an association) of the ActiveRecord object.
# File lib/render_sync/scope_definition.rb, line 22 def self.ensure_valid_params!(klass, lambda) unless (invalid = lambda.parameters.map { |p| p[1] } - klass.column_names.map(&:to_sym) - klass.instance_methods) == [] raise ArgumentError, "Invalid parameters #{invalid}. Parameter names of the sync_scope lambda definition may only contain ActiveRecord column names or instance methods of #{klass.name}." end true end
new(klass, name, lambda)
click to toggle source
# File lib/render_sync/scope_definition.rb, line 5 def initialize(klass, name, lambda) self.class.ensure_valid_params!(klass, lambda) @klass = klass @name = name @lambda = lambda @parameters = lambda.parameters.map { |p| p[1] } end